1094 谷歌的招聘 (20 分)
【我的代码】
1//1094 谷歌的招聘 (20 分)
2#include <iostream>
3#include <string>
4#include <algorithm>
5#include <math.h>
6#include <sstream>
7using namespace std;
8bool isprime(long long number){//判断素数
9 for(long long i = 2; i < sqrt(number); i++){
10 if(number%i == 0)
11 return false;
12 }
13 return true;
14}
15int main(){
16 int L, K; //L:数字长度 , K:连续的数字长度
17 cin>>L>>K;
18 string num;
19 getchar();
20 getline(cin, num);
21 for(int i = 0; i <= L - K; i++){
22 string str;
23 long long res;
24 str = num.substr(i,K);
25 stringstream ss;
26 ss << str;
27 ss >> res;
28 ss.clear();
29 if(isprime(res)){
30 cout<<str;
31 return 0;
32 }
33 }
34 cout<<"404";
35 return 0;
36}
【思路】
题目看起来很长很难,实际上考点分析出来以后也就很简单了。
考察:
一个一个说。
首先是素数的判断方法,这个已经练的不少了。
bool isprime(long long number){//判断素数
for(long long i = 2; i < sqrt(number); i++){
if(number%i == 0)
return false;
}
return true;
}
遍历一下,只要没有出现整除的情况就是素数,没什么问题。
然后是字符串的截取。这个完全就是在考察你对C++的包熟练度问题。
str = num.substr(i,K);
从i索引开始,往后截取k个字符。
最后是字符串与整数的转换,这个有很多种方法,这里采用的是sstream。
#include <sstream> //记得改头文件!!
string str;
long long res;
ss << str;
ss >> res;
ss.clear();