您的位置:首页 > 编程语言 > C语言/C++

PAT甲级 1152 Google Recruitment (20分) 字符串处理/C++

2020-06-24 04:26 696 查看

1152 Google Recruitment (20分)

字符串处理问题

题目的大意:输入长度为n的一串字符,寻找下标最小的长度为k的素数字符串

思路:从字符串的头开始,逐个切割k个单位的字符,使用stoi()函数,将string转化为int型,再判断是否为素数

#include<iostream>                  //输入输出流头文件
#include<math.h>                    //数学函数
#include<string>                    //C++string类
using namespace std;                //标准命名空间
void findPrime(string s,int k,int n);
int isPrime(int x);
int main(){                         //主函数
#ifdef ONLINE_JUDGE                 //如果有oj系统(在线判定),则忽略文件读入,否则使用文件作为标准输入
#else
freopen("1.txt", "r", stdin);   //从1.txt输入数据
#endif

int length,k;
cin>>length>>k;
string s;
cin>>s;
findPrime(s,k,length);
return 0;                       //返回0,如果不返回0,PAT会报错
}
void findPrime(string s,int k,int n){
int i=0;
while(i<=n-k){//到最后的k个字符单位,不用继续往后
string s1=s.substr(i,k);
int x=stoi(s1);
if(isPrime(x)) {
cout<<s1<<endl;
return;
}
i++;
}
cout<<"404"<<endl;
return ;
}
int isPrime(int x){
if(x<=1) return 0;
for(int i=2;i<=sqrt((double)x);i++){
if(x%i==0) return 0;
}
return 1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: