POJ 2739

作者: DeamoV | 来源:发表于2018-01-09 12:24 被阅读20次

    题目LINK

    题意解释

    这道题是主要是看有几种顺序排列的素数相加能得到目标数目的题。
    题目的关键在于 A.求素数 B. 累加看有几种累加方法.

    收获

    这道题的代码是完全是自己的,思路也是自己来的。代码风格借鉴了之前的之前做前两道题时参考的代码风格。主要功能单独提出来写,这样做以后发现整体代码的可读性上升了。以及,对于水题,觉得重点在于翻译题吧,并没有考到太多的计算机的知识。

    AC代码

    #include <iostream>
    #include <stdio.h>
    #define MAXN 10005
    
    using namespace std;
    
    
    int prime[MAXN];
    
    int if_is_prime_number(int n){
        for (int i = 2;i * i <= n;i++) {
            if (n % i == 0) return 0;
        }
        return 1;
    }
    
    void init(){
        int i = 0;
        int j = 2;
        while(i < MAXN){
            if(if_is_prime_number(j) == 1){
                    prime[i] = j;
                    i++;
            }
            j++;
        }
    }
    // prime is prime tables
    int solve(int n){
        int sum;
        int result;
        result = 0;
        if(n == 1)return 0;
        for(int i = 0; i < n; i++){
            sum = 0;
            int j = i;
            while(sum < n){
                sum = sum + prime[j];
                if(sum == n)result++;
                j++;
            }
        }
        return result;
    }
    int main()
    {
        int judgenumber;
        int i,result;
        init();
        while(true){
            cin >> judgenumber;
            if(judgenumber == 0) return 0;
            result = solve(judgenumber);
            cout << result << endl;
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:POJ 2739

          本文链接:https://www.haomeiwen.com/subject/cjmwnxtx.html