题目描述
有一个6位的正整数,它有个很神奇的性质:
分别用2 3 4 5 6去乘它,得到的仍然是6位数,并且乘积中所包含的
数字与这个6位数完全一样!只不过是它们的顺序重新排列了而已。
请计算出这个6位数。
这是一个整数,请通过浏览器提交答案,不要填写任何多余的内容(比如说明性的文字)
//100 000-166 667
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
bool judge(int x[10],int y[10])//判断两个数组中元素是否相等
{
for(int i=0;i<10;i++)
{
if(x[i]!=y[i])
return false;
}
return true;
}
void fun(int n,int a[10])//记录整数n都由那些数字构成
{
int t=n;
while(t!=0)
{
int m=t%10;
a[m]++;
t=t/10;
}
}
int main ()
{
for(int n=100000;n<166667;n++)//因为所求整数的六倍也是个六位数,所以最大是166667
{
int t=n;
int a[10],a2[10],a3[10],a4[10],a5[10],a6[10];
int t2=n*2;
int t3=n*3;
int t4=n*4;
int t5=n*5;
int t6=n*6;
memset(a,0,sizeof(a));//置零
memset(a2,0,sizeof(a2));
memset(a3,0,sizeof(a3));
memset(a4,0,sizeof(a4));
memset(a5,0,sizeof(a5));
memset(a6,0,sizeof(a6));
fun(t,a);//找到每个数 构成它的数字个数,存到数组中
fun(t2,a2);
fun(t3,a3);
fun(t4,a4);
fun(t5,a5);
fun(t6,a6);
/*for(int i=0;i<=9;i++)
cout<<a[i]<<" ";
cout<<endl;*/
if(judge(a,a2) && judge(a,a3) && judge(a,a4) && judge(a,a5) && judge(a,a6))//如果六个数组完全相同,说明构成他们的数字和出现次数都相同
cout<<n<<endl;
}
return 0;
}
14年的蓝桥国赛题,主要还是暴力