本文共 1449 字,大约阅读时间需要 4 分钟。
http://acm.hdu.edu.cn/showproblem.php?pid=5104
求出前10000的素数,按大小顺序枚举2个得出第3个,判断一下是否有序,更新答案。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #define mem0(a) memset(a, 0, sizeof(a))13 #define mem(a, b) memset(a, b, sizeof(a))14 #define lson l, m, rt << 115 #define rson m + 1, r, rt << 1 | 116 #define eps 0.000000117 #define lowbit(x) ((x) & -(x))18 #define memc(a, b) memcpy(a, b, sizeof(b))19 #define x_x(a) ((a) * (a))20 #define LL long long21 #define DB double22 #define pi 3.1415926535923 #define MD 1000000724 #define INF25 #define max(a, b) ((a) > (b)? (a) : (b))26 using namespace std;27 int prime[2200], flag[12000];28 void init()29 {30 int cnt = 0;31 flag[1] = 1;32 for(int i = 2; i <= 10000; i++) {33 if(!flag[i]) {34 prime[++cnt] = i;35 for(int j = i * i; j <= 10000; j += i) {36 flag[j] = 1;37 }38 }39 }40 }41 int main()42 {43 //freopen("input.txt", "r", stdin);44 init();45 int n;46 while(~scanf("%d", &n)) {47 int ans = 0;48 for(int i = 1; prime[i] < n; i++) {49 for(int j = i; prime[i] + prime[j] < n; j++) {50 int tmp = n - prime[i] - prime[j];51 if( tmp >= prime[j] && !flag[tmp]) {52 ans++;53 }54 }55 }56 printf("%d\n", ans);57 }58 return 0;59 }
转载于:https://www.cnblogs.com/jklongint/articles/4113535.html