POJ-1316(类素数筛选法)

来源:互联网 发布:初级程序员证书查询 编辑:程序博客网 时间:2024/06/05 02:34

题目:http://poj.org/problem?id=1316

分析:如果按照定义对每个数进行判断则需要O(N*N)的时间,但用类似筛素数的思想,我们可以mark出所有不满足条件的,自然而然的就可以输出满足条件的了,时间复杂度是O(Nlog10(N))


#include <cstdio>const int MAX_N = 10000;bool generated[MAX_N + 1] = {0};int sumDigits(int x){int sum = 0;for( ; x; x /= 10){sum += x % 10;}return sum;}int main(){for(int i = 1; i <= MAX_N; ++i){if(!generated[i]){printf("%d\n", i);for(int x = i; x <= MAX_N && !generated[x]; x += sumDigits(x)){generated[x] = true;}}}return 0;}


0 0
原创粉丝点击