CodeForces 17 A.Noldbach problem(水~)
2017-12-23 12:33
561 查看
Description
问2~n中是否至少有k个数字可以表示成连续两个素数的和加一
Input
两个整数n,k(2≤n≤1000,0≤k≤1000)
Output
如果2~n中有k个数字可以表示成连续两个素数的和加一则输出YES,否则输出NO
Sample Input
27 2
Sample Output
YES
Solution
简单题,先把所有这种特殊的数字处理出来,令num[i]为2~i中这种数字的个数,判断num[n]是否不小于k即可
Code
问2~n中是否至少有k个数字可以表示成连续两个素数的和加一
Input
两个整数n,k(2≤n≤1000,0≤k≤1000)
Output
如果2~n中有k个数字可以表示成连续两个素数的和加一则输出YES,否则输出NO
Sample Input
27 2
Sample Output
YES
Solution
简单题,先把所有这种特殊的数字处理出来,令num[i]为2~i中这种数字的个数,判断num[n]是否不小于k即可
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; typedef pair<int,int>P; const int INF=0x3f3f3f3f,maxn=1005; int prime[maxn],res,mark[maxn]; void get_prime(int n=1000) { res=0; for(int i=2;i<=n;i++) if(!mark[i]) { prime[res++]=i; for(int j=2*i;j<=n;j+=i)mark[j]=1; } } int num[maxn]; int main() { get_prime(); for(int i=0;i<res-1;i++) { int temp=prime[i]+prime[i+1]+1; if(temp<=1000&&mark[temp]==0)num[temp]++; } for(int i=1;i<=1000;i++)num[i]+=num[i-1]; int n,k; while(~scanf("%d%d",&n,&k)) printf("%s\n",num >=k?"YES":"NO"); return 0; }
相关文章推荐
- Codeforces 17A Noldbach problem(数学)
- CodeForces-17A-Noldbach problem
- 【水遍历\打表】#17 A. Noldbach problem
- codeforces 17A Noldbach problem
- cf17A Noldbach problem (素数打表)
- Codeforces 749A-Bachgold Problem
- 【codeforces 749A】Bachgold Problem
- 17A. Noldbach problem
- 【codeforces 749A】Bachgold Problem
- Codeforces Beta Round #17 A - Noldbach problem 暴力
- 【codeforces 749A】Bachgold Problem
- Noldbach problem
- D - Noldbach problem CodeForces - 17A
- 17A Noldbach problem
- 【codeforces 749A】Bachgold Problem
- A. Noldbach problem
- 【codeforces】2014 Asia Xian Regional Contest G The Problem to Slow Down You 【Palindromic Tree】
- 【codeforces】2014-2015ACM-ICPC CERC 14 Problem J: Pork barrel 【LCT+主席树】
- [Project Euler] Problem 17
- codeforces 17 D Notepad 快速幂?