-
题目大意:找到e中第一个连续的k位素数
-
思路:
- 用字符串存数字
- 用两重循环遍历每一个数字,若这个数字不是素数,就跳过该循环,若找到了该k位素数,就输出
- 若遇到类似0023的情况,就输出0023
-
知识点:
- 字符串
- stoi、stod可以将字符串 string 转化为对应的 int 型、 double 型变量
- str.substr(index)/str.substr(index, num):获取字符串的子串。
- 字符串
-
代码:
#include <iostream> #include <string> #include <cmath> using namespace std; bool isPrime(int n){ if(n == 0 || n == 1) return false; // 还要考虑n=0的情况 for(int i = 2; i <= sqrt(n); i++) if(n % i == 0) return false; return true; } int main() { int l, k; string s; cin >> l >> k >> s; for(int i = 0; i < l - k + 1; i++){ int n = stoi(s.substr(i, k)); if(isPrime(n)){ cout << s.substr(i, k); return 0; } } cout << "404"; return 0; } -
总结:
- 将字符串 string 转化为对应的 int 型、 double 型变量:stoi、stod
- 获取字符串的子串:str.substr(index)/str.substr(index, num)
- 这里判断素数时需要考虑n = 0的情况!!!
【PAT】1152 Google Recruitment (20 分)
最新推荐文章于 2022-02-11 10:27:53 发布
本文介绍了一种使用C++编程解决的问题,通过字符串操作和素数判断算法,找出给定数字串中连续的k位素数。重点讲解了如何将字符串转为整数、判断素数的方法以及特殊处理如0023的情况。

5728

被折叠的 条评论
为什么被折叠?



