https://pintia.cn/problem-sets/994805260223102976/problems/1071785997033074688
思路
用string的substr和stoi挨个转化成int型数字判断是否为素数即可,题目的片段最多为9位,在int范围内
测试点
2:就像题目说的,0023的情况要输出0023而不是23,所以直接输出substr即可;
4:整体长度小于片段长度则直接输出404(string,size()是无符号数,如果减出负数,会变得很大,需要用int转换一下)
AC代码
#include <iostream>
#include <cmath>
using namespace std;
bool isprime(int a) //本体没有片段为1的情况
{
for (int i=2; i<=sqrt(a); ++i)
if (a%i==0)
return 0;
return 1;
}
int main()
{
int l,k,i,flag=1;
scanf("%d %d",&l,&k);
string s;
cin>>s;
for (i=0; i<=(int)s.length()-k && flag; ++i) {
int t=isprime(stoi(s.substr(i,k)));
if (t) {
flag=0;
break;
}
}
if (!flag)
cout<<s.substr(i,k);
else
cout<<"404";
}