关于算法-数据结构:PAT甲级1152-Google-Recruitment

37次阅读

共计 545 个字符,预计需要花费 2 分钟才能阅读完成。

题目粗心:

给出一个 L 长度的字符串,求出其中第一个 K 位的素数。

算法思路:

应用字符串 s 承受输出的字符串,并枚举每个 k 位的子串 (起始地位从 0 到 L -K),而后再转换成整数,判断是否是素数,如果是就间接输入并退出程序。如果不存在就输入 404.

留神点:

  • 1、测试点 3 考查前导 0 的输入。

提交后果:

AC 代码:

#include<cstdio>
#include<string>
#include<iostream>
#include<cmath>

using namespace std;

bool isPrime(int num){if(num<=1){return false;}
    int sqrtn = (int)sqrt(num*1.0);
    for (int i = 2; i <= sqrtn; ++i) {if(num%i==0){return false;}
    }
    return true;
}

int main(){
    int L,K;
    scanf("%d %d",&L,&K);
    string s;
    cin>>s;
    int len = L-K;
    for(int i=0;i<=len;++i){string r = s.substr(i,K);
        int num = stoi(r);
        if(isPrime(num)){
            cout<<r;
            return 0;
        }
    }
    printf("404");
    return 0;
}

正文完
 0