神奇的题,一个数加上这个数的各位数之和,得出的数即为有generator的数,列出所self number的数(小于10000)
可惜,不知道为啥自己电脑上可以运行,onlinejudge不接受。。。
#include <iostream>
#include 
<vector>
#include 
<string>
using namespace std;

int digsum(int n)    //计算各位之和
{
    
int sum=0;
    
while (n)
    
{
        sum
+=n%10;
        n
/=10;
    }

        
return sum;
}

int main()
{
    
int a[10003];
    
int m;
    
for (int i=1;i<=10003;i++)
    
{
         m
=i+digsum(i);
         
if (m<=10000)
         
{
             a[m
-1]=1;
         }

    }

    
for (int j=0;j<10000;j++)
    
{
        
if (a[j]!=1)
        
{
            printf(
"%d\n",j+1);
        }

    }

}


附上某高手代码。。。
#include"stdio.h"

int s[10100]={0};

void main()
{
    
int a,b,c,d;
    
for(a=0;a<=9;a++)
        
for(b=0;b<=9;b++)
            
for(c=0;c<=9;c++)
                
for(d=0;d<=9;d++)
                     s[a
*1001+b*101+c*11+d*2]=1;
       
for(a=1;a<=10000;a++)
        
if(s[a]==0)
        printf(
"%d\n",a);

}