【问题描述】
有一个6位的正整数,它有个很神奇的性质:
分别用 2、3、4、5、6去乘它,得到的仍然是6位数,并且乘积中所包含的数字与这个6位数完全一样!只不过是它们的顺序重新排列了而已。
请计算出这个6位数。
【答案提交】
这是一个整数,请通过浏览器提交答案,不要填写任何多余的内容(比如说明性的文字)
答案:142857
题解:
#include <iostream>
#include <cstring>
using namespace std;
int tmp[10], s[10];
void record(int n)
{
memset(tmp, 0, sizeof tmp); // 重置 计数数组1 !!
while(n)
{
tmp[n % 10] ++;
n /= 10;
}
}
bool judge(int x)
{
memset(s, 0, sizeof s); // 重置 计数数组2 !!
while(x)
{
s[x % 10] ++;
x /= 10;
}
for (int i = 0; i < 10; i ++)
if(tmp[i] != s[i]) return false;
return true;
}
int main()
{
for (int i = 100000; i < 999999; i ++)
{
record(i);
if(judge(2*i) && judge(3*i) && judge(4*i) && judge(5*i) && judge(6*i))
{
cout << i << endl;
return 0;
}
}
}