PAT甲級1152Google Recruitment
阿新 • • 發佈:2020-08-04
題目連結
https://pintia.cn/problem-sets/994805342720868352/problems/1071785055080476672
題解
涉及到的英語知識
-
recruitment
招聘
-
the first 10-digit prime found in consecutive digits of the natural constant e
由自然常數e的連續數字中的第一個10位素數
-
prime
素數
-
consecutive
連續的,連貫的
-
transcendental number
超越數:在數論中,超越數是指任何一個不是代數數的無理數。只要它不是任何一個有理係數代數方程的根,它即是超越數。最著名的超越數是e以及π。
思路、程式碼以及注意點
- 題目要求
- 題目給出L位的數字N,要求求出其中第一個K位的素數,如果不存在則輸出404
- 提示:開頭的0也算是素數的一部分,比如0002應和2等價
- 思路
- 遍歷字串並取子串,判斷它是否為素數,找到第一個素數即可,找不到的話就輸出404
- 注意點
- 如果找到了第一個素數,則輸出結果時要輸出字串,方便處理
0002
這種情況 - 找不到第一個素數,以字串或者數字形式輸出404都可以
- 如果找到了第一個素數,則輸出結果時要輸出字串,方便處理
// Problem: PAT Advanced 1152 // URL: https://pintia.cn/problem-sets/994805342720868352/problems/1071785055080476672 // Tags: String Prime #include <iostream> #include <string> using namespace std; bool isPrime(int num); int main() { // 題目給出L位的數字N,要求求出其中第一個K位的素數,如果不存在則輸出404 // 提示:開頭的0也算是素數的一部分,比如0002應和2等價 int L, K; // 數字位數,所求素數位數 string N; // 數字 cin >> L >> K >> N; for (int i = 0; i <= L - K; i++){ string str = N.substr(i, K); if (isPrime(stoi(str))){ cout << str << endl; return 0; } } cout << 404 << endl; return 0; } bool isPrime(int num){ if (num<=1) return false; for (int i = 2; i * i <= num; i++) if (num % i == 0) return false; return true; }
作者:@臭鹹魚
轉載請註明出處:https://www.cnblogs.com/chouxianyu/
歡迎討論和交流!