PTA甲级 1152 Google Recruitment (C++)

In July 2004, Google posted on a giant billboard along Highway 101 in Silicon Valley (shown in the picture below) for recruitment. The content is super-simple, a URL consisting of the first 10-digit prime found in consecutive digits of the natural constant e e e. The person who could find this prime number could go to the next step in Google’s hiring process by visiting this website.
在这里插入图片描述
The natural constant e is a well known transcendental number(超越数). The first several digits are: e = 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921… where the 10 digits in bold are the answer to Google’s question.

Input Specification:

Each input file contains one test case. Each case first gives in a line two positive integers: L ( ≤ 1 , 000 ) L (≤ 1,000) L(1,000) and K ( < 10 ) K (< 10) K(<10), which are the numbers of digits of the given number and the prime to be found, respectively. Then the L L L-digit number N N N is given in the next line.

Output Specification:

For each test case, print in a line the first K K K-digit prime in consecutive digits of N N N. If such a number does not exist, output 404 instead. Note: the leading zeroes must also be counted as part of the K K K digits. For example, to find the 4-digit prime in 200236, 0023 is a solution. However the first digit 2 must not be treated as a solution 0002 since the leading zeroes are not in the original number.

Sample Input 1:

20 5
23654987725541023819

Sample Output 1:

49877

Sample Input 2:

10 3
2468024680

Sample Output 2:

404

Solution:

// Talk is cheap, show me the code
// Created by Misdirection 2021-08-30 21:45:46
// All rights reserved.

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

bool isPrime(int a){
    if(a <= 1) return false;
    if(a <= 3) return true;

    for(int i = 2; i <= sqrt(a); ++i){
        if(a % i == 0) return false;
    } 
    return true;
}

int main(){
    int l, n;
    scanf("%d %d", &l, &n);
    string s;
    cin >> s;

    for(int i = 0; i < l + 1 - n; ++i){
        string tmp = s.substr(i, n);

        int t = stoi(tmp);
        if(isPrime(t)){
            printf("%s\n", tmp.c_str());
            return 0;
        }
    }

    printf("404\n");

    return 0;
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

负反馈循环

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值