谁能讲解一下这个程序的具体步骤?
我们发现,有一个6位数,639172,它的平方等于一个数。639172^2=408540845584
而这个式子有两个特点:
其一,639172这个6位数,没有一位数字互相之间是相同的。也就是说,很容易看出来,个位上是个2,这个2就没有在其它为数上出现过。
另外,数字408540845584 里面的所有数字都没有和 639172里的数字重复。
还有一个6位数,也符合上面这个例子的条件,找是哪个数。。。。。。。。
下面这个程序就是算这个数的:
主要帮我解释一下ChckNum里面的东西
比如for语句问什么可以这样写 for(;n;n/=10)
temp前面的++又怎么解释等等 if(++temp[n%10]>1) return 0;
#include <stdio.h>
int CheckNum(__int64 n)
{
char temp[10] = {0};
__int64 longn=n*n;
for(;n;n/=10) if(++temp[n%10]>1) return 0;
for(;longn;longn/=10) if(temp[longn%10]>0) return 0;
return 1;
}
void main()
{
for(int n=123456;n<=987654;n++) if(CheckNum(n)) printf("%d\n", n);
}