小明正看着 203879 这个数字发呆。
原来,203879 * 203879 = 41566646641
这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。
具有这样特点的6位数还有一个,请你找出它!
再归纳一下筛选要求:
-
6位正整数
-
每个数位上的数字不同
-
其平方数的每个数位不含原数字的任何组成数位
#include <stdio.h>
int f(long long i, int a[]) //判断数i中各个位数是否相等
{
int b;
while (i)
{
b = i % 10;
if (a[b] == 0)
{
a[b]++;
}
else
{
return 0;
}
i = i / 10;
}
return 1;
}
int f1(long long x, int a[]) //判断x中的各个位数与i中的各个位数是否相等
{
int b;
while (x)
{
b = x % 10;
if (a[b] != 0)
{
return 0;
}
x = x / 10;
}
return 1;
}
int main()
{
int a[10];
for (long long i = 123456; i <= 987654; i++)
{
for (int j = 0; j < 10; j++)
{
a[j] = 0;
}
if (f(i, a))
{
long long x = i * i;
if (f1(x, a))
{
printf("%d\n", i);
}
}
}
return 0;
}