题目大意:
一个数n,比如n=75,或者n=39,则n可以根据下面这种规则生成87与51这两个数,所以87跟51这两个数就不是self number,而当有一个数不能由其他数根据这种方法生成过来的时候,这个数就称为self number.
d(75) = 75 + 7 + 5 = 87
d(39) = 39 + 3 + 9 = 51
There are thirteen self-numbers less than 100: 1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, and 97.
解题思路;
直接打表打出所有 generator ,然后再筛选就行了。
代码:
#include
using namespace std;
const int MAX=1000002;
int gen[MAX*2];
void f(int a)
{
int b=a;
while(b)
{
a+=b%10;
b/=10;
}
gen[a]=1;
}
int main(void)
{
int i;
for(i=1;i