排它平方数 - 永不冷�龅娜松�
小明正看着 203879 这个数字发呆。 原来,203879 * 203879 = 41566646641这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。具有这样特点的6位数还有一个,请你找出它!
再归纳一下筛选要求:
小明正看着 203879 这个数字发呆。 原来,203879 * 203879 = 41566646641这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。具有这样特点的6位数还有一个,请你找出它!
再归纳一下筛选要求:
- 6位正整数
- 每个数位上的数字不同
- 其平方数的每个数位不含原数字的任何组成数位
int judge(long i)
{
long temp = i;
int t[10] = {0};
for(int m=0;m<6;m++)
{
int j = i%10;
t[j]++;
i/=10;
}
for (int m=0; m<10; m++) {
if(t[m]>1)
return 0;
}
//判断平方数
int p = 0;
for(long n=temp*temp; n!=0 ;p++)
{
if(t[n%10]!=0)
return 0;
n/=10;
}
return 1;
}
int main()
{
for (long i=1000000;i<999999;i++)
{
if(judge(i))
{
printf("%ld\n",i);
}
}
}
Read full article from 排它平方数 - 永不冷�龅娜松�