首页 > 其他分享 >PAT Basic 1094. 谷歌的招聘

PAT Basic 1094. 谷歌的招聘

时间:2023-04-13 19:22:44浏览次数:40  
标签:1094 10 PAT 数字 输出 int MAX 素数 Basic

PAT Basic 1094. 谷歌的招聘

1. 题目描述:

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

prime.jpg

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

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

2. 输入格式:

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

3. 输出格式:

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

4. 输入样例:

20 5
23654987725541023819
10 3
2468001680

5. 输出样例:

49877
404

6. 性能要求:

Code Size Limit
16 KB
Time Limit
200 ms
Memory Limit
64 MB

思路:

编写子函数isPrime()进行素数判断,从头开始遍历字符串将给定长度的子串转换为数字后进行判断和输出,这里K最大为9,所以相应子串对应的数值小于\(10^9\),不用担心int类型存不下。第一次提交时testpoint1,2报wrong answer,主要涉及两个点:

  • 素数判断时不要忘记对0和1进行判断,两个都不是素数,加上0的判断后过了testpoint1。
  • 结果输出时要输出原始子串,这里我一开始输出的是转换后的整数类型,修改为输出字符串后过了testpoint2。

My Code:

#include <stdio.h>
#include <string.h> // strncpy header

#define MAX_LEN (1000+1) // MAX_LEN + '\0'

int isPrime(int num);

// first submit testpoint1, 2 wrong answer
int main(void)
{
    int l=0, k=0;
    char num[MAX_LEN] = "";
    int i=0, j=0; // iterator
    int tempNum=0;
    char output[MAX_LEN] = "";
    
    scanf("%d%d", &l, &k);
    scanf("%s", num);
    //printf("%s\n", num);
    
    for(i=0; i+k-1< l; ++i)
    {
        tempNum=0;
        for(j=0; j<k; ++j)
        {
            tempNum *= 10; // make a carry
            tempNum += (num[i+j] - '0');
        }
        if(isPrime(tempNum))
        {
            //char *strncpy(char *dest, const char *src, size_t n)
            strncpy(output, num+i, k);
            printf("%s", output); // this fixed testpoint2
            
            //printf("i: %d\n", i);
            //printf("%d", tempNum);
            return 0;
        }
    }
    printf("404");
    
    return 0;
}

int isPrime(int num)
{
    int i=0; // iterator
    
    // the judge of num==0 fixed testpoint1.
    if(num==1 || num==0) return 0; // 1 is not a prime, 0 is not a prime
    
    for(i=2; i*i<=num; ++i)
    {
        if(num % i == 0)
        {
            return 0;
        }
    }
    
    return 1;
}

标签:1094,10,PAT,数字,输出,int,MAX,素数,Basic
From: https://www.cnblogs.com/tacticKing/p/17316065.html

相关文章

  • Visual Stadio 编译提示 The BaseOutputPath/OutputPath property is not set for pr
    完整的错误信息是:TheBaseOutputPath/OutputPathpropertyisnotsetforproject'xx.csproj'.PleasechecktomakesurethatyouhavespecifiedavalidcombinationofConfigurationandPlatformforthisproject.Configuration='Debug'Plat......
  • DispatcherServlet 是一个 Servlet 也是一个bean
    ServletDispatcherServlet实现了javax.servlet.Servlet接口,负责处理来自客户端浏览器的HTTP请求,并将请求分发给相应的Controller进行处理。DispatcherServlet通常是Web应用程序中唯一一个Servlet,并且是SpringMVC框架中最核心的组件之一。SpringBoot启动时会初始化Tomcat容器......
  • PAT Basic 1093. 字符串A+B
    PATBasic1093.字符串A+B1.题目描述:给定两个字符串 \(A\) 和 \(B\),本题要求你输出 \(A+B\),即两个字符串的并集。要求先输出 \(A\),再输出 \(B\),但重复的字符必须被剔除。2.输入格式:输入在两行中分别给出 \(A\) 和 \(B\),均为长度不超过 \(10^6\)的、由可见ASCII......
  • PAT Basic 1091. N-自守数
    PATBasic1091.N-自守数1.题目描述:如果某个数\(K\)的平方乘以\(N\)以后,结果的末尾几位数等于\(K\),那么就称这个数为“\(N\)-自守数”。例如\(3×92^2=25392\),而\(25392\)的末尾两位正好是\(92\),所以\(92\)是一个\(3\)-自守数。本题就请你编写程序判断一个给定的......
  • PAT Basic 1090. 危险品装箱
    PATBasic1090.危险品装箱1.题目描述:集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里。比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸。本题给定一张不相容物品的清单,需要你检查每一张集装箱货品清单,判断它们是否能装在同一只箱子里。2.输入格......
  • PathView实现炫酷SVG动画
    解析SVG,需要将一个androidsvg.jar包含进libshttps://github.com/geftimov/android-pathview<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientati......
  • springboot 中的 classpath 指的是什么路径?
    classpath其本质其实是指项目打包后的classes下的路径,一般用来指代“src/main/resources”下的资源路径。通常会在各种配置文件中使用【classpath】关键字,例如:yml配置文件:WebMvcConfigurer配置类:......
  • PAT-basic-1028 人口普查 java c++
    一、题目某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过......
  • PAT-basic-1029 旧键盘 java c++
    一、题目旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入格式:输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括......
  • PAT Basic 1089. 狼人杀-简单版
    PATBasic1089.狼人杀-简单版1.题目描述:以下文字摘自《灵机一动·好玩的数学》:“狼人杀”游戏分为狼人、好人两大阵营。在一局“狼人杀”游戏中,1号玩家说:“2号是狼人”,2号玩家说:“3号是好人”,3号玩家说:“4号是狼人”,4号玩家说:“5号是好人”,5号玩家说:“4号是好人”......