由于该题是求一个数是不是“自身数”,而定义一个数是不是“自身数”的根据就是是否有祖先,又因为一个数的祖先一定比这个数要小,所以这就和筛选法很像了。
#include <cstring>
#include <cstdlib>
#include <cstdio>
using namespace std;
char hash[1000005];
void deal( int x )
{
int rec = x;
while( x > 0 )
{
int c = x % 10;
x /= 10;
rec += c;
}
hash[rec] = 1;
}
int main()
{
for( int i = 1; i <= 1000000; ++i )
{
deal( i );
if( !hash[i] )
printf( "%d\n", i );
}
return 0;
}