• PAT(B) 1094 谷歌的招聘(Java)


    题目链接:1094 谷歌的招聘 (20 point(s))

    题目描述

    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

    20 5
    23654987725541023819
    

    输出样例 1

    49877
    

    输入样例 2

    10 3
    2468024680
    

    输出样例 2

    404
    

    Java代码

    /**********************************************************************************
    Submit Time			Status		Score	Problem	Compiler		Run Time	User
    8/21/2019, 20:27:01	Accepted	20		1094	Java (openjdk)	98 ms		wowpH
    **********************************************************************************/
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    
    public class Main {
    	public static void main(String[] args) throws Exception {
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		String[] arr = br.readLine().split(" ");
    		int K = Integer.parseInt(arr[1]);					// K位连续数字
    		int L = Integer.parseInt(arr[0]) - K;				// 连续数字最大起始下标
    		String N = br.readLine();							// 正整数N
    
    		String number = null;								// 截取的数
    		boolean primeFlag = false;							// number的素数标志
    		for (int i = 0; i <= L && !primeFlag; ++i) {		// 非素数继续查找
    			number = N.substring(i, i + K);					// 第i位起始的K位数字
    			int num = Integer.parseInt(number);				// int型
    			int max = (int) Math.sqrt(num);					// 开方
    			primeFlag = true;								// 默认num是素数
    			for (int j = 2; j <= max; ++j) {
    				if (0 == num % j) {							// 余数为0
    					primeFlag = false;						// 非素数
    					break;									// 退出素数检查
    				}
    			}
    		}
    		if (primeFlag) {									// 是素数
    			System.out.println(number);						// 输出素数
    		} else {											// 不是素数
    			System.out.println("404");
    		}
    	}
    }
    

    提交结果

    提交结果

  • 相关阅读:
    Maven关于web.xml中Servlet和Servlet映射的问题
    intellij idea的Maven项目运行报程序包找不到的错误
    修改Maven项目默认JDK版本
    刷题15. 3Sum
    刷题11. Container With Most Water
    刷题10. Regular Expression Matching
    刷题5. Longest Palindromic Substring
    刷题4. Median of Two Sorted Arrays
    刷题3. Longest Substring Without Repeating Characters
    刷题2. Add Two Numbers
  • 原文地址:https://www.cnblogs.com/wowpH/p/11687418.html
Copyright © 2020-2023  润新知