Sum of Consecutive Prime Numbers(素数打表+尺取)
Description
numbers, so neither 7 + 13 nor 3 + 5 + 5 + 7 is a valid representation for the integer 20.
Your mission is to write a program that reports the number of representations for the given positive integer.
Input
Output
Sample Input
2
3
17
41
20
666
12
53
0
Sample Output
1
1
2
3
0
0
1
2 题目意思:给你一个数问你这个数可以有多少种方案的连续素数来组成,输出方案数。 解题思路:素数打表与尺取的组合应用。
https://www.cnblogs.com/wkfvawl/p/9092546.html
开始以为应该时间超不了限,暴力了一发,果然还真是出问题了
#include<stdio.h>
#include<string.h>
#define MAX 10010
long long s[MAX],isprime[MAX];
void prime()///素数打表
{
long long i,k,j;
k=;
memset(isprime,,sizeof(isprime));///初始化都认为是素数
isprime[]=;
isprime[]=;///0和1不是素数
for(i=; i<=MAX; i++)
{
if(isprime[i])
{
s[k++]=i;///保存素数
}
for(j=i*; j<=MAX; j+=i)
{
isprime[j]=;///素数的倍数都不是素数
}
}
}
int main()
{
int n,i,j,count,sum;
prime();
while(scanf("%d",&n)!=EOF)
{
if(n==)
{
break;
}
count=;
for(i=; i<; i++)
{
sum=;
for(j=i; j<; j++)
{
sum=sum+s[j];
if(sum==n)
{
count++;
break;
}
else if(sum>n)
{
break;
}
}
}
printf("%d\n",count);
}
return ;
}
这是正确的尺取法的答案
1 #include<stdio.h>
2 #include<string.h>
3 #define MAX 10010
4 long long s[MAX],isprime[MAX];
5 void prime()///素数打表
6 {
7 long long i,k,j;
8 k=1;
9 memset(isprime,1,sizeof(isprime));///初始化都认为是素数
10 isprime[0]=0;
11 isprime[1]=0;///0和1不是素数
12 for(i=2; i<=MAX; i++)
13 {
14 if(isprime[i])
15 {
16 s[k++]=i;///保存素数
17 }
18 for(j=i*2; j<=MAX; j+=i)
19 {
20 isprime[j]=0;///素数的倍数都不是素数
21 }
22 }
23 }
24 int main()
25 {
26 int n,i,j,count,sum;
27 prime();
28 while(scanf("%d",&n)!=EOF)
29 {
30 if(n==0)
31 {
32 break;
33 }
34 count=0;
35 sum=0;
36 j=1;
37 i=0;
38 while(1)
39 {
40 while(sum<n&&s[i+1]<=n)///s[i+1]<=n表示这个数是可以加的,即右端点还可以继续右移
41 {
42 sum=sum+s[++i];
43 }///开始先找到一个满足条件的序列,之后扩大左端点
44 if(sum<n)
45 {
46 break;
47 }
48 else if(sum>n)
49 {
50 sum=sum-s[j];
51 j++;
52 }///不断扩大右端点
53 else if(sum==n)///存在这样一个连续素数的集合
54 {
55 count++;
56 sum=sum-s[j];///继续扩大右端点
57 j++;
58 }
59 }
60 printf("%d\n",count);
61 }
62 return 0;
63 }
Sum of Consecutive Prime Numbers(素数打表+尺取)的更多相关文章
- POJ 2739 Sum of Consecutive Prime Numbers(素数)
POJ 2739 Sum of Consecutive Prime Numbers(素数) http://poj.org/problem? id=2739 题意: 给你一个10000以内的自然数X.然 ...
- poj 2739 Sum of Consecutive Prime Numbers 素数 读题 难度:0
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19697 ...
- ACM:POJ 2739 Sum of Consecutive Prime Numbers-素数打表-尺取法
POJ 2739 Sum of Consecutive Prime Numbers Time Limit:1000MS Memory Limit:65536KB 64bit IO Fo ...
- POJ 2739 Sum of Consecutive Prime Numbers【素数打表】
解题思路:给定一个数,判定它由几个连续的素数构成,输出这样的种数 用的筛法素数打表 Sum of Consecutive Prime Numbers Time Limit: 1000MS Memo ...
- POJ 2739 Sum of Consecutive Prime Numbers( *【素数存表】+暴力枚举 )
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19895 ...
- POJ 2739. Sum of Consecutive Prime Numbers
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20050 ...
- POJ2739 Sum of Consecutive Prime Numbers(尺取法)
POJ2739 Sum of Consecutive Prime Numbers 题目大意:给出一个整数,如果有一段连续的素数之和等于该数,即满足要求,求出这种连续的素数的个数 水题:艾氏筛法打表+尺 ...
- POJ 2739 Sum of Consecutive Prime Numbers(尺取法)
题目链接: 传送门 Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Description S ...
- POJ2739 Sum of Consecutive Prime Numbers 2017-05-31 09:33 47人阅读 评论(0) 收藏
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 25225 ...
- Sum of Consecutive Prime Numbers
Sum of Consecutive Prime Numbers http://poj.org/problem?id=2739 Time Limit: 1000MS Memory Limit: 6 ...
随机推荐
- ztree的用法
哎哟,好久没写什么这个虽然没人看的博客了,其实这段时间情绪非常低谷,就没有写博客了,不过我还是回来了,回到正题,在前端页面编程的时候,我们经常用到树状,用原始的树状呢,功能没有那么强大,所以这个时候 ...
- 【若泽大数据实战第二天】Linux命令基础
Linux基本命令: 查看IP: ifconfig 或者 hostname -i(需要配置文件之后才可以使用) ipconfig(Windows) 关闭防火墙: Service iptables st ...
- 大数据学习--day10(继承-权限-super-final-多态-组合)
继承-权限-super-final-多态-组合 权限修饰符 内容 public protected default(不写就是它) ...
- 使用Scala开发Apache Kafka的TOP 20大好用实践
本文作者是一位软件工程师,他对20位开发人员和数据科学家使用Apache Kafka的方式进行了最大限度得深入研究,最终将生产实践环节需要注意的问题总结为本文所列的20条建议. Apache Kafk ...
- LinkedList的源码分析(基于jdk1.8)
1.初始化 public LinkedList() { } 并未开辟任何类似于数组一样的存储空间,那么链表是如何存储元素的呢? 2.Node类型 存储到链表中的元素会被封装为一个Node类型的结点.并 ...
- hadoop学习笔记——用python写wordcount程序
尝试着用3台虚拟机搭建了伪分布式系统,完整的搭建步骤等熟悉了整个分布式框架之后再写,今天写一下用python写wordcount程序(MapReduce任务)的具体步骤. MapReduce任务以来H ...
- Spark运行模式_基于YARN的Resource Manager的Custer模式(集群)
使用如下命令执行应用程序: 和"基于YARN的Resource Manager的Client模式(集群)"运行模式,区别如下: 在Resource Manager端提交应用程序,会 ...
- 实验1 查看CPU和内存,用机器指令和汇编指令编程
·实验任务 (1)使用Debug,用E命令和A命令以两种方式将指令写入内存 机器码 汇编指令 b8 20 4e mov ax,4e20h 05 16 14 add ax,14 ...
- 推荐 的FPGA设计经验(4) 时钟和寄存器控制架构特性使用
Use Clock and Register-Control Architectural Features FPGAs provide device-wide clocks and register ...
- BZOJ1452_Count_KEY
题目传送门 二维树状数组,对于每个颜色开一个树状数组,用容斥求解. code: #include <cstdio> using namespace std; int read() { ') ...