这个题目我都想死了,,做了整整一上午,当然包括看知识点,,
但其实这是一个比较水的题目..- -#
晕死了都..
注意那个if(flag)
耗费了无数精力才发现的...
贴出代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define MAXN 100100001
int N;
int getsum(int x)
{
int sum=0;
while(x)
{
sum+=x%10;
x/=10;
}
return sum;
}
int main()
{
while(scanf("%d",&N),N)
{
for(int x=N+1;;x++)
{
int sum=getsum(x);
int temp=0;
int flag=x;
int cnt=0;
for(int i=2;i<=sqrt(flag*1.0);i++)
{
while(flag%i==0)
{
cnt++;
temp+=getsum(i);
flag/=i;
}
}
if(flag!=1)
temp+=getsum(flag);
if(sum==temp&&cnt!=0)
{
printf("%d\n",x);
break;
}
}
}
return 0;
}