问题描述
小明正看着 203879 这个数字发呆,原来,203879 * 203879 = 41566646641,这有什么神奇呢?
仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。
具有这样特点的6位数还有一个,请你找出它!
注意
再归纳一下筛选要求:
- 6位正整数
- 每个数位上的数字不同
- 其平方数的每个数位不含原数字的任何组成数位
答案提交
注意:只提交另一 6 位数,题中已经给出的这个不要提交。
注意:不要书写其它的内容(比如:说明性的文字)。
答案:639172
题解:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
int s[20];
int main()
{
for (LL i = 123456; i < 987654; i ++)
{
LL a = i, b = i * i, k = 0;
bool flag1 = true, flag2 = true;
while(a)
{
int t = a % 10;
for (int i = 0; i < k; i ++)
if(t == s[i])
{
flag1 = false; // 原数字本身有重复的数
break;
}
s[k ++] = t;
a /= 10;
}
if(flag1) // 原数字各数位互不相同,则执行下面的程序
{
while(b)
{
LL t = b % 10;
for (int i = 0; i < k; i ++)
if(t == s[i])
{
flag2 = false; // 与原数字有相同的数
break;
}
b /= 10;
}
if(flag2) cout << i << endl;
}
}
return 0;
}