当前位置:   article > 正文

蓝桥杯刷题第九天_素数就是不能再进行等分的整数。比如:7,11。而9不是素数,因为它可以平分为3等份。

素数就是不能再进行等分的整数。比如:7,11。而9不是素数,因为它可以平分为3等份。
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
素数就是不能再进行等分的整数。比如7,11。而 9 不是素数,因为它可以平分为 3 等份。一般认为最小的素数是2,接着是 3,5,...
请问,第 100002(十万零二)个素数是多少?
请注意:“2” 是第一素数,“3” 是第二个素数,依此类推。
运行限制
最大运行时间:1s
最大运行内存: 128M

直接找,筛质数的话也行

  1. #include<iostream>
  2. using namespace std;
  3. bool check(int x){
  4. for(int i = 2; i <= x / i; i++)
  5. if(x % i == 0)
  6. return false;
  7. return true;
  8. }
  9. int main(){
  10. int ans = 0;
  11. for(int i = 2; ; i++){
  12. if(check(i)) ans++;
  13. if(ans == 100002) {
  14. cout<<i<<endl;
  15. break;
  16. }
  17. }
  18. return 0;
  19. }

补充筛质数

题目是,找出1到n的质数个数

埃式筛法

遍历1到n所有的数,找出每个数的倍数,是倍数的变为false

  1. #include<iostream>
  2. using namespace std;
  3. const int N = 1000010;
  4. int n;
  5. int primes[N], cnt;
  6. bool st[N];
  7. void get_prime(int n){
  8. for(int i = 2; i <= n; i++){
  9. if(!st[i]){
  10. primes[cnt++] = i;
  11. for(int j = i + i; j <= n; j += i) st[j] = true;
  12. }
  13. }
  14. }
  15. int main(){
  16. cin>>n;
  17. get_prime(n);
  18. cout<<cnt<<endl;
  19. return 0;
  20. }

线性筛法

只用最小质因子来筛,每个数只会被筛一次,所有是线性的

primes[j] 一定是 i 的最小质因子

  1. #include<iostream>
  2. using namespace std;
  3. const int N = 1000010;
  4. int n;
  5. int primes[N], cnt;
  6. bool st[N];
  7. void get_prime(int n){
  8. for(int i = 2; i <= n; i++){
  9. if(!st[i]) primes[cnt++] = i;
  10. for(int j = 0; primes[j] <= n / i; j++){
  11. st[primes[j] * i] = true;
  12. if(i % primes[j] == 0) break;
  13. }
  14. }
  15. }
  16. int main(){
  17. cin>>n;
  18. get_prime(n);
  19. cout<<cnt<<endl;
  20. return 0;
  21. }

第二题:图书排列

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
将编号为 1 ~ 10 的 10 本书排放在书架上,要求编号相邻的书不能放在相邻的位置。
请计算一共有多少种不同的排列方案。
运行限制
最大运行时间:1s
最大运行内存: 128M

全排列问题,全排列枚举,进行判断即可

  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int main(){
  5. int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  6. int ans = 0;
  7. do{
  8. bool falg = 0;
  9. for(int i = 1; i < 10; i++)
  10. if(a[i] - 1 == a[i-1] || a[i-1] == a[i] + 1) falg = 1;
  11. if(!falg) ans++;
  12. }while(next_permutation(a, a + 10));
  13. printf("%d", ans);
  14. return 0;
  15. }

第三题:日志统计

题目描述
小明维护着一个程序员论坛。现在他收集了一份"点赞"日志,日志共有 N 行。其中每一行的格式是:
ts id
表示在 ts 时刻编号 id 的帖子收到一个"赞"。
现在小明想统计有哪些帖子曾经是"热帖"。如果一个帖子曾在任意一个长度为 D 的时间段内收到不少于 K 个赞,小明就认为这个帖子曾是"热帖"。
具体来说,如果存在某个时刻 T 满足该帖在[T,T+D) 这段时间内(注意是左闭右开区间)收到不少于 K 个赞,该帖就曾是"热帖"。
给定日志,请你帮助小明统计出所有曾是"热帖"的帖子编号。
输入描述
输入格式:
第一行包含三个整数 N,D,K
以下 N 行每行一条日志,包含两个整数 ts 和 id。
其中,1≤KN≤10 5 ,0≤ts≤10 5 ,0≤id≤10 5
输出描述
按从小到大的顺序输出热帖 id。每个 id 一行。
输入输出样例
输入
  1. 7 10 2
  2. 0 1
  3. 0 10
  4. 10 10
  5. 10 1
  6. 9 1
  7. 100 3
  8. 100 3
  9. copy
输出
  1. 1
  2. 3

贪心加双指针,进行排序,再在时间范围内选取帖子

  1. #include<algorithm>
  2. #include<iostream>
  3. using namespace std;
  4. #define x first
  5. #define y second
  6. typedef pair<int, int> PII;
  7. const int N = 100010;
  8. int n, t, k;
  9. PII logs[N];
  10. int cnt[N];
  11. bool st[N];
  12. int main(){
  13. scanf("%d%d%d", &n, &t, &k);
  14. for(int i = 0; i < n; i++) scanf("%d%d", &logs[i].x, &logs[i].y);
  15. sort(logs, logs + n);
  16. for(int i = 0, j = 0; i < n; i++){
  17. int id = logs[i].y;
  18. cnt[id] ++;
  19. while(logs[i].x - logs[j].x >= t){
  20. cnt[logs[j].y]--;
  21. j ++;
  22. }
  23. if(cnt[id] >= k) st[id] = true;
  24. }
  25. for(int i = 0; i <= N; i++)
  26. if(st[i])
  27. printf("%d\n", i);
  28. return 0;
  29. }

第四题:杨辉三角

下面的图形是著名的杨辉三角形:

如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列: 1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,⋯

给定一个正整数 N,请你输出数列中第一次出现 N 是在第几个数?

输入描述

输入一个整数 N

输出描述

输出一个整数代表答案。

输入输出样例

输入
6
输出
13

有点傻的做法,骗分,别学我

  1. #include<iostream>
  2. using namespace std;
  3. const int N = 10000;
  4. int n;
  5. int a[11];
  6. int main(){
  7. int a[22] = {1,1,1,1,1,1,1,3,3,1,1,4,6,4,1,1,5,10,10,5,1};
  8. scanf("%d", &n);
  9. for(int i = 0; i <= 21; i++)
  10. if(a[i] == n){
  11. cout<<i + 1<<endl;
  12. break;
  13. }
  14. return 0;
  15. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/794780
推荐阅读
相关标签
  

闽ICP备14008679号