您的位置:首页 > 其它

zoj 1133 || poj 1142 Smith Numbers

2010-08-08 18:54 393 查看
水题。



但是纠结了好长时间。



题意没理解完全。。。悲剧啊悲剧。zoj poj AC



冰心还是比我先做出来。。。哎。最近刷水题能力越来越弱了。。。



#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int a[20005],b[1000],prime[20005];
    int i,j,p=0,q=0,k,sum=0,temp;
    int n,num;
     a[0] = 0;
     a[1] = 0;
     for(i=2;i<=20000;i++)
       a[i]= i;
     for(i=2;i<=10000;i++)
       if(a[i])
          for(j=2;j*i<20000;j++)
              a[j*i] = 0;
    j = 0;
    for(i=2; i<=20000; i++)
    {
        if(a[i])
        {
            prime[j] = a[i];
            j++;
        }
    }
   while( scanf("%ld",&n)!=EOF && n)
   {
        for(num = n+1; ; num++)
        {
            sum = 0; n = num;
            while(n!=0)
            {
                sum += n%10;
                n /= 10;
            }
            i=0; q = 0;temp = 0;
            n = num;
            while(n!=1)
            {
                if( prime[i] > sqrt(n) )
                    break;
                while( n%prime[i] == 0 )
                {    
                    b[q] = prime[i];
                    n = n/prime[i];
                    q++;
                }
                i++;
            }
            if( n!= 1)
            {
                b[q] = n;
                q++;
            }
            if( b[0] == num )
                continue;
            for(i=0; i<q; i++)
            {
                while( b[i] >= 10 )
                {
                    temp += b[i]%10;
                    b[i] /= 10;
                }
                temp += b[i];
            }
            if( temp == sum )
                break;
        }
        printf("%ld/n",num);
}
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: