PAT 乙级 1094 谷歌的招聘
1. 题目简述及在线测试位置
1.1 已知正整数Number 和 N,要求找出Number 中最早出现的、N位连续数字所组成的素数。例如:Number=131 N=2,所要找的素数就是13 。如果找不到这样的素数,输出404
1.2 在线测试位置: 1094 谷歌的招聘
2. 基本思路
通过string类型存储正整数Number,然后从前先后依次遍历字符串,当截取的字符串长度等于N时,执行素数判定,根据判定结果执行对应的打印
3. 完整AC代码
#include <string> //stoi()
#include <iostream>
using namespace std;
#define MAX 10 //K<10
bool JudgePrime(int N);
int main()
{
int Len, N;
cin >> Len >> N;
string Number; bool Flag = false;
cin >> Number;
char a[MAX]; int aCount = 0, Start, Tmp;
for (int i = 0; i <Len; i++)
{
if (!Flag)
{
a[aCount++] = Number[i];
Flag = true;
Start = i; //save
}
else
a[aCount++] = Number[i];
if (aCount == N)
{
a[aCount] = '\0';
Tmp = stoi(a);
if (JudgePrime(Tmp))
{
for (int j = 0; j < aCount; j++)
cout << a[j];
return 0;
}
else
{
aCount = 0;
i = Start; //restore
Flag = false;
}
}
}
cout << "404";
return 0;
}
bool JudgePrime(int N)
{
if (N == 1 || N==0)
return false;
for (int i = 2; (long long)i * i <= N; i++)
{
if (N % i)
continue;
else
return false;
}
return true;
}