1152 Google Recruitment (20 分)

1152 Google Recruitment (20 分)

2004年7月,Google在硅谷101号公路旁的巨型广告牌上张贴了招募信息(如下图所示)。内容非常简单,URL由自然常数的连续数字中的前10位质数组成e。可以找到该素数的人可以访问此网站,进入Google招聘流程的下一步。

prime.jpg

自然常数 e是一个众所周知的超越数(超越数)。前几个数字是:e = 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921 ...其中粗体的10位数字是Google问题的答案。

现在,您需要解决一个更普遍的问题:在任何给定的L数字编号的连续数字中找到第一个K数字质数。

输入规格:

每个输入文件包含一个测试用例。每个案例首先在一行中给出两个正整数:L(≤1,000)和K(< 10),分别是给定数字的位数和要找到的质数。然后在下一行给出L位数字N。

输出规格:

对于每个测试用例,请在一行中连续打印N个连续数字中的第一个K位素数。如果不存在此数字,则输出404。注意:前导零也必须算作K位的一部分。例如,要在200236中找到4位数的质数,可以使用0023。但是,由于前导零不在原始数字中,因此不能将第一个数字2视为解决方案0002。

样本输入1:

20 5
23654987725541023819

样本输出1:

49877

样本输入2:

10 3
2468024680

样本输出2:

404

作者: 陈越

单位: 浙江大学

时间限制: 200 ms

内存限制: 64 MB

#include <iostream>
#include <cstdio>
#include <string.h>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
#include <math.h>
#include <list>
#include <stack>
#include <queue>
#include <set>
#include <sstream>

using namespace std;

bool isPrime(int n){
	
	if(n<=1){
		
		return false;
	}
	
	for(int i=2;i<=sqrt(n);i++){
		
		if(n%i==0){
			
			return false;
		}
	}
	
	return true;
}

int main(){
	
	ios::sync_with_stdio(false); 
	
	int l,k;
	cin>>l>>k;
	
	string str;
	
	cin>>str;
	
	for(int i=0;i<=l-k;i++){
		
		string s = str.substr(i,k);
		
		stringstream ss;
		ss<<s;
		
		long long m;
		ss>>m;
		
		if(isPrime(m)){
			
			cout<<s<<endl;
			return 0;
		}
	}
	
	cout<<404<<endl;
	
	
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值