whenever

  • Home

  • Tags21

  • Categories6

  • Archives122

  • About

PAT乙级1094 || 谷歌的招聘(详解,C/C++示例,测试点分析)

Posted on 2020-01-16 In PAT

谷歌的招聘

题目描述

2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 位连续数字。能找出这个素数的人,就可以通过访问谷歌的这个网站进入招聘流程的下一步。

prime.jpg

自然常数 e 是一个著名的超越数,前面若干位写出来是这样的:e = 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921… 其中粗体标出的 10 位数就是答案。

本题要求你编程解决一个更通用的问题:从任一给定的长度为 L 的数字中,找出最早出现的 K 位连续数字所组成的素数。

输入格式

输入在第一行给出 2 个正整数,分别是 L(不超过 1000 的正整数,为数字长度)和 K(小于 10 的正整数)。接下来一行给出一个长度为 L 的正整数 N。

输出格式

在一行中输出 N 中最早出现的 K 位连续数字所组成的素数。如果这样的素数不存在,则输出 404。注意,原始数字中的前导零也计算在位数之内。例如在 200236 中找 4 位素数,0023 算是解;但第一位 2 不能被当成 0002 输出,因为在原始数字中不存在这个 2 的前导零。

输入样例1

1
2
20 5
23654987725541023819

输出样例1

1
49877

输入样例2

1
2
10 3
2468024680

输出样例2

1
404

问题解决

解题思想

此题主要分为两部分,一部分是从长度为L的数的提取出连续的K位,另一部分是判断该连续的K位数是否为素数。

坑点提醒

输出相应素数时注意前导0也要输出(输出宽度为K),测试点2考察的就是这一点。

代码示例(C/C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include<iomanip> //输出前导0需要的头文件

using namespace std;

bool is_prime(long long tmp) {
for (int i = 2; i * i < tmp; i++) {
if (tmp % i == 0) {
return false;
}
}
return true;
}

int main() {
int L, K;
cin >> L >> K;
string str;
getchar();
getline(cin, str);
for (int i = 0; i < L - K + 1; i++) {
long long tmp = 0;
for (int j = i; j < i + K && j < L; j++) {
tmp = tmp * 10 + str[j] - '0';
}
if (is_prime(tmp)) {
cout << setfill('0') << setw(K) << tmp; //注意输出前导0
return 0;
}
}
cout << "404";
return 0;
}

题目来源:PAT乙级1094
作者:CHEN, Yue
单位:浙江大学

稀罕作者
Mengzhao Wang WeChat Pay

WeChat Pay

Mengzhao Wang Alipay

Alipay

# C/C++ # PAT # 编程
PAT乙级1093 || 字符串A+B(详解,C/C++示例,测试点分析)
PAT乙级1095 || 解码PAT准考证(详解,C/C++示例,测试点分析)
  • Table of Contents
  • Overview
Mengzhao Wang

Mengzhao Wang

Try? All the way !
122 posts
6 categories
21 tags
  1. 1. 谷歌的招聘
    1. 1.1. 题目描述
    2. 1.2. 输入格式
    3. 1.3. 输出格式
    4. 1.4. 输入样例1
    5. 1.5. 输出样例1
    6. 1.6. 输入样例2
    7. 1.7. 输出样例2
    8. 1.8. 问题解决
      1. 1.8.1. 解题思想
      2. 1.8.2. 坑点提醒
      3. 1.8.3. 代码示例(C/C++)
© 2021 Mengzhao Wang