这题的意思是凡是可以由其他数字按照方式y=abc+a+b+c的方式生成的数字都不叫Self Numbers。
因此,对于这一题,我们可以从1开始,按照上面的公式把所有能够生成的数字计算出来,并且进行标记,最后输出从1到10000中没有被标记的数字。
代码如下:
#include <stdio.h>
#include <string.h>
int flag[10000];
int main()
{
int i,t,res;
memset(flag,0,sizeof(flag));
for(i=1;i<10000;i++)
{
res=i;t=i;
for(t=i;t;t=t/10)
res+=t%10;
if(res<10000) flag[res]=1;
}
for(i=1;i<10000;i++)
if(flag[i]==0) printf("%d\n",i);
return 0;
}