1094 谷歌的招聘 (20 分)
- 这是一个贼坑的题
附上第一次的代码如下:
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
bool IsPrime(int i) {
if (i == 0 || i == 1)return false;
for (int j = 2; j <= sqrt(i); j++)
if (i%j == 0)return false;
return true;
}
int main() {
int N, K, value;
cin >> N >> K;
string s;
cin >> s;
for (int i = 0; i <=(s.length()-K); i++) {
value=stoi(s.substr(i, K));
if (IsPrime(value)) {
cout << s.substr(i, K); return 0;
}
}
cout << "404";
return 0;
}
这个代码我反复思考了几十次,觉得完全莫得问题!
但是每次都是过不了测试点4!!!!!
后来我仔细看了下柳神的代码,我发现基本上完全一致,唯一一个地方就是:
for (int i = 0; i <=(s.length()-K); i++)
经测试,此处s.length()改为N就对了;
那么问题来来了:
原题描述如下:
输入格式:
输入在第一行给出 2 个正整数,分别是 L(不超过 1000 的正整数,为数字长度)和 K(小于 10 的正整数)。接下来一行给出一个长度为 L 的正整数 N。
那意思就是说输入的第二行数的长度等于L,但是此处测试案例绝对是输入的长度大于了L,导致测试点4的s.length()不等于N!
坑。。。。。。。。。。