POJ 3006

作者: DeamoV | 来源:发表于2018-02-08 22:52 被阅读17次

    题目LINK

    题意解释

    题意就是给了3个数,第一个是最开始的第一个数,第二个是每次累加的数,第三个数是表达输出的是生成的数中,包含的素数中的第n个素数。(有点绕,多读几遍题就理解了)

    收获

    这道题是更大的一个水题,在之前的POJ2739中用到了素数的判别方法,直白的翻译题意就好了。注意0和1不是素数,第一次的WA就这么贡献的。推荐测试下1 1 1这个数据。

    AC代码

    #include <iostream>
    
    using namespace std;
    
    int if_is_prime_number(int n){
        if(n == 0 || n == 1)
            return 0;
        else{
            for (int i = 2;i * i <= n;i++) {
                if (n % i == 0) return 0;
            }
        }
        return 1;
    }
    
    int main(void){
        int a,b,n;
        int output = 0;
        scanf("%d %d %d",&a,&b,&n);
        while (a != 0 && b != 0 && n != 0) {
            int i = 0;
            while (n > 0) {
                if(if_is_prime_number(a + i*b))n--;
                output = a + i*b;
                /*
                cout << "n :" << n << endl;
                cout << "judge :" << if_is_prime_number(a + i*b) << endl;
                cout << "the number :" << a + i*b << endl << endl;
                */
                i++;
            }
            cout << output << endl;
            scanf("%d %d %d",&a,&b,&n);
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:POJ 3006

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