题目:https://pintia.cn/problem-sets/994805260223102976/problems/1071785997033074688
经验总结:
记:s.size() 返回的是一个size_type类型,这个类型是一个无符号类型,所以判断的时候不应该用size_type类型去减某个数,而是应该用加某个数来与size_type类型对比,否则可能会出现相减溢出而错误。
C++代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool isPrime(ll n){ //判断一个数是否是素数
if(n<=1) return false;
if(n==2 || n==3) return true;
if(n%6!=1 && n%6!=5) return false;
for(int i=5;i*i<=n;i+=6)
{
if(n%i==0 || n%(i+2)==0) return false;
}
return true;
}
int main() {
ll l,k;
string s;
cin>>l>>k>>s;
for(decltype(s.size()) i=0;i+k<=s.size();i++){ //判断不应该用s.size()-k,小心溢出
string num=s.substr(i,k);
if(isPrime(stoll(num))){
cout<<num<<endl;
return 0;
}
}
cout<<"404"<<endl;
return 0;
}