您的位置:首页 > 其它

世界上最神奇的数字 算法求解

2013-04-08 23:59 369 查看
一个自然数的数位打乱之后,重新组成一个自然数,则称这两个数为相同组合数,如果一个数的2倍数,3倍数,。。。。。6倍数都是这个数的相同组合数,我们则称这个数是神奇的数,其中自然数中最小的神奇的数就称为这个世界上最神奇的数,现在编写算法求解世界上最神奇的数。
#include<cstring>
#include<cstdio>
using namespace std;
int c1[10];
int c2[10];
int i,j;
bool flag;
void  f(int a,int c[])
{
    int d = a;
    while(d!=0)
    {
        c[d%10]++;
        d=d/10;
    }
}
int main()
{
      for(i=1;flag!=true;i++)
      {
        flag = false;
        memset(c1,0,sizeof(c1));
        f(i,c1);
        for(j=2;j<7;j++)
        {
            int k = i*j;
            memset(c2,0,sizeof(c2));
            f(k,c2);
            int b=0;
            while(c1[b]==c2[b]&&b<10) b++;
            if(b!=10)
            {
                flag = false;
                break;
            }
            else flag = true;
         }
         if(flag == true )
         {
             printf("最神奇的数是 %d",i);
         }
      }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: