标题:神奇6位数
有一个6位的正整数,它有个很神奇的性质:
分别用2 3 4 5 6去乘它,得到的仍然是6位数,并且乘积中所包含的数字与这个6位数完全一样!只不过是它们的顺序重新排列了而已。
请计算出这个6位数。
这是一个整数,请通过浏览器提交答案,不要填写任何多余的内容(比如说明性的文字)
思路: 开一个数组初始化全部为0,把一个6位数取每一位,每一位用过的数字当做数组下标,此下标的数组元素+1;这个数乘了2~6过后的数取每一位,每一位用过的数字当做数组下标,此下标的数组元素-1;如果两次用的数字相同,最后这个数组里面的数又都是0了;最后只需要遍历数组是否全部为0;
#include<stdio.h>
#include<string.h>
int flag[10];
int val[10];
int main()
{
int check=0 ,i=100000,count=0;
memset(flag,0,sizeof(flag));
while(i<=200000) //因为200000*6超过了6位数,粗略的减少一点数据
{
i++;
int temp=i;
memset(flag,0,sizeof(flag));
while(temp)
{
flag[temp%10]++;
temp/=10;
}
int bb=true;
for(int j=2;j<=6;j++)
{
int temp2=i*j;
memcpy(val,flag,sizeof(flag));
while(temp2)
{
val[temp2%10]--;
temp2/=10;
}
for(int k=0;k<10;k++)
{
if(val[k]!=0)
bb=false;
}
}
if(bb==true)
printf("%d\n",i);
}
return 0;
}