题目地址
题目大意
给出一串数字和我们需要得到的数字位数,判断这个串中是否有指定长的质数存在,存在输出这个子串,不存在输出404
解题思路
- 需要一个将string型的子串变为数字的功能函数。
- 需要一个判断给定数是否为质数的功能函数。
- 也可以采用先生成质数hash在判断的方式。
完整代码
// A1152.cpp : Defines the entry point for the console application.
//
#include "stdio.h"
#include "string"
#include "iostream"
using namespace std;
string haha,ans = "404";
int n,k;
int prime(int n){
for(int i = 2;i*i <= n;i++){
if(n % i == 0) return 0;
}
return 1;
}
int toNum(string a){
int sum = 0,dd = 1;
for(int i = a.size()-1;i >= 0;i--){
sum += dd*(a[i] - '0');
dd = dd*10;
}
return sum;
}
void jub(){
for(int i = 0;i <= haha.size() - k;i++)
if(prime(toNum(haha.substr(i,k)))){
ans = haha.substr(i,k);
break;
}
}
int main(int argc, char* argv[])
{
scanf("%d%d",&n,&k);
cin>>haha;
jub();
if(n >= k)
cout<<ans<<endl;
else
cout<<"404"<<endl;
//printf("Hello World!\n");
return 0;
}
总结
20分的题相对容易,考察质数和string串操作。
- 欢迎评论区交流讨论。