PAT 甲级 1152 Google Recruitment (20分)

1152 Google Recruitment

  • 题目地址
  • 题目大意
  • 解题思路
  • 完整代码
  • 总结

题目地址

Google Recruitment (20分)

题目大意

给出一串数字和我们需要得到的数字位数,判断这个串中是否有指定长的质数存在,存在输出这个子串,不存在输出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串操作。

  • 欢迎评论区交流讨论。

你可能感兴趣的:(浙大PAT甲级题目合集,数据结构,c++)