HDU1128_Self Numbers_筛选法

题目大意:          一个数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
原文地址:https://www.cnblogs.com/cchun/p/2520176.html