pta-谷歌招聘
2021/8/3 6:06:10
本文主要是介绍pta-谷歌招聘,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
7-158 谷歌的招聘 (20 分)2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 位连续数字。能找出这个素数的人,就可以通过访问谷歌的这个网站进入招聘流程的下一步。
自然常数 e 是一个著名的超越数,前面若干位写出来是这样的:e = 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921... 其中粗体标出的 10 位数就是答案。
本题要求你编程解决一个更通用的问题:从任一给定的长度为 L 的数字中,找出最早出现的 K 位连续数字所组成的素数。
输入格式:
输入在第一行给出 2 个正整数,分别是 L(不超过 1000 的正整数,为数字长度)和 K(小于 10 的正整数)。接下来一行给出一个长度为 L 的正整数 N。
输出格式:
在一行中输出 N 中最早出现的 K 位连续数字所组成的素数。如果这样的素数不存在,则输出 404
。注意,原始数字中的前导零也计算在位数之内。例如在 200236 中找 4 位素数,0023 算是解;但第一位 2 不能被当成 0002 输出,因为在原始数字中不存在这个 2 的前导零。
输入样例 1:
20 5 23654987725541023819结尾无空行
输出样例 1:
49877结尾无空行
输入样例 2:
10 3 2468024680结尾无空行
输出样例 2:
404 注意测试点:1.数组空间要足够大 2.sum要使用long long数据类型,要不然当n够大时会溢出 3.最后出循环后还要再判断一次,因为我的循环条件是*(p+n)!=0,出循环后还会剩下n个数字 4.按我的写法,还有可能出现N<n的情况;看代码注释
#include <stdio.h> #include <math.h> int prime(long long n){ if(n<=1) return 0; if(n==2||n==3) return 1; for(int i=2;i<=sqrt(n);i++){ if(n%i==0) return 0; } return 1; } int main(){ char a[10000]; int N,n; scanf("%d%d",&N,&n); getchar();//吸收回车 gets(a); long long sum; char *p=a; while(*(p+n)){ sum=0; for(int i=0;i<n;i++){ sum=sum*10+*(p+i)-'0'; } if(prime(sum)){ for(int i=0;i<n;i++) printf("%d",*(p+i)-'0'); return 0;; } p++; } sum=0; if(n==N-(p-a)){//这个地方就是处理如果N<n,则输出404; while(*p){ sum=sum*10+*p-'0'; p++; } if(prime(sum)){ for(int i=0;i<n;i++) printf("%d",*(p-n+i)-'0'); } } if(prime(sum)==0) printf("404"); }
这篇关于pta-谷歌招聘的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28微服务架构中API版本控制的实践
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南