题目大意:
给出一个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;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。