当前位置: 代码迷 >> 综合 >> 1094 谷歌的招聘 (20分)【附加思路】
  详细解决方案

1094 谷歌的招聘 (20分)【附加思路】

热度:84   发布时间:2024-02-12 11:43:31.0

1094 谷歌的招聘 (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

思路:

这个题大一的时候做出来了,当时就纯无脑莽着做,拿当时的代码和现在刷了半个月题的代码比了比,感觉这段时间的努力没有全部木大,希望之后越来越好!(下面放两个代码,一个是大一写的那个,记录一下青春,可以直接跳到代码二)

回归正题:

这个题属于字符串截取的题,我也没有多想,就直接用第二个string读的,再写一个素数检测一下即可

代码一:

#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int l, k, sushu, flag, jishuqi;
long long b, shi;
long c;
string zong;
string a;
int main()
{cin >> l >> k;cin >> zong;a = "";for (int i = 0; i < l - k + 1; i++){b = 1;c = 0;while (b <= k){shi = 1;for (int j = k; j > b; j--)shi *= 10;c += (zong[i + b - 1] - '0')*shi;b++;}if (c == 1 || c == 0)flag = 0;elseif (c == 2 || c == 3)sushu = 1;elsefor (int j = 2; j <= sqrt(c); j++){if (c%j == 0){sushu = 0;break;}elsesushu = 1;}if (sushu){for (int o = i; o < i + k; o++)a += zong[o];cout << a;flag = 1;break;}}if (flag == 0)cout << "404";return 0;
}

代码二:

#include<iostream>
#include<cmath>
#include<string>
using namespace std;
bool sushu(int a);
int main()
{int L, K, b = 0;string s1;cin >> L >> K;cin >> s1;while (1) {if (b == s1.size() - K) {cout << "404";break;}string s2(s1, b, K);int a = atoi(s2.c_str());if (sushu(a)){cout << s2;break;}elseb++;}return 0;
}
bool sushu(int a) {if (a <= 3)return a > 1;else {for (int i = 2; i <= sqrt(a); i++) if (a%i == 0)return false;return true;}
}

通过截图:
在这里插入图片描述

如果有什么问题,欢迎在评论区留言~