PAT甲级-1152-Google Recruitment(20 分)

描述

传送门:我是传送门

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. The person who could find this prime number could go to the next step in Google’s hiring process by visiting this website.

prime.jpg

The natural constant e is a well known transcendental number(超越数). The first several digits are: e = 2.718……..921… where the 10 digits in bold are the answer to Google’s question.

Now you are asked to solve a more general problem: find the first K-digit prime in consecutive digits of any given L-digit number.

输入

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

输出

For each test case, print in a line the first K-digit prime in consecutive digits of N. If such a number does not exist, output 404 instead. Note: the leading zeroes must also be counted as part of the 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.

样例

输入

1
2
3
>20 5
>23654987725541023819
>

输出

1
2
>49877
>

输入

1
2
3
>10 3
>2468024680
>

输出

1
2
>404
>

思路

坑点: 1. 0、1都不是素数 2. 输出的时候带着前导零

因为个人习惯原因,不喜欢用自带函数。所以一开始的几个功能都是手撸的,然后错三个点

发现自己把0,1给漏掉了,改了改,错两个点

发现自己有个变量写成了定值了,改掉了,错一个点

尝试了一下是不是得带着前导零?改掉以后没错了

(还是头文件里的函数好用,以后再也不手撸了

总之是挺水的一道题

代码

/*
 * ========================================================
 *
 *       Filename:  1152.cpp
 *
 *           Link:
 *
 *        Created:  2019/01/21 22时05分09秒
 *
 *         Author:  duny31030 , duny31030@126.com
 *   Organization:  duny31030.top
 *
 * ========================================================
 */
#include <bits/stdc++.h>
using namespace std;
#define clr(a, x) memset(a, x, sizeof(a))
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define pre(i,a,n) for(int i=n;i>=a;i--)
#define ll long long
#define ios ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);

const double eps = 1e-6;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int N = 1100;
// char a[N];
int len,l;
string a;
bool isprime(int n)
{
    if(n == 0 || n == 1)    return false;
    for(int i = 2;i*i <= n;i++)
    {
        if(n%i == 0)    return false;
    }
    return true;
}

int main()
{
    ios
    #ifdef ONLINE_JUDGE
    #else
        freopen("in.txt","r",stdin);
        // freopen("out.txt","w:",stdout);
    #endif
    cin >> len >> l;
    cin >> a;
    int tmp = 0;
    for(int i = 0;i <= len-l;i++)
    {
        string b = a.substr(i,l);
        tmp = stoi(b);
        if(isprime(tmp))
        {
            cout << b;
            return 0;
        }
    }
    cout << "404";
    fclose(stdin);
    // fclose(stdout);
    return 0;
}
原文地址:https://www.cnblogs.com/duny31030/p/14305328.html