[poj2739][水题]数论_求素数和
2014-03-21 23:07
351 查看
【头一次正儿八经写题解好紧张...】
题目:
http://poj.org/problem?id=2739
题意:
给定一个数N,将其表示为多个连续素数的和,问有几种表示方法。
num是用来计算质数的,通过筛数的方法。若i为质数,则num[i]=i;若i为合数,则num[i]=0;
呐,显而易见num这个数组中会有很多个0;于是再开一个sum数组,里面存储的是所有的质数(除了sum[0]=0 为了求和方便)就是下面那样
[0,2,3,5,7,11,13...]
然后用两个指针j和k初始值为0和1,c用于记录当前质数的和(及数组j到k的和)。
因此对于给定的数字N,如果N大于c则k向后移一位。
如果N小于c则j向后移一位。
如果N=c则res(用于记录表示方法的种数的)+1同时j和k分别后移一位。
结束的标志为sum[k]>n,此时一个数字都比n大就没有求和的必要了。
第一次的时候将数组开在了外面并且设为static于是莫名其妙就RUNTIME ERROR了...
改过来之后就AC了...
题目:
http://poj.org/problem?id=2739
题意:
给定一个数N,将其表示为多个连续素数的和,问有几种表示方法。
num是用来计算质数的,通过筛数的方法。若i为质数,则num[i]=i;若i为合数,则num[i]=0;
呐,显而易见num这个数组中会有很多个0;于是再开一个sum数组,里面存储的是所有的质数(除了sum[0]=0 为了求和方便)就是下面那样
[0,2,3,5,7,11,13...]
然后用两个指针j和k初始值为0和1,c用于记录当前质数的和(及数组j到k的和)。
因此对于给定的数字N,如果N大于c则k向后移一位。
如果N小于c则j向后移一位。
如果N=c则res(用于记录表示方法的种数的)+1同时j和k分别后移一位。
结束的标志为sum[k]>n,此时一个数字都比n大就没有求和的必要了。
Accepted | 3128 KB | 282 ms | Java | 834 B | 2014-03-21 16:26:15 |
import java.util.Scanner; public class Main { public static void main(String[] args) { int[] num = new int[12100]; int[] sum = new int[1500]; Scanner scan = new Scanner(System.in); for (int i = 0; i < 12100; i++) num[i] = i; for (int i = 2; i < 110; i++) { int n = i; if (num != 0) { n += i; while (n < 12100) { num = 0; n += i; } } } int m = 1; for(int i=2;i<12100;i++){ if(num[i]!=0){ sum[m]=num[i]; m++; } } int n = scan.nextInt(); while(n!=0){ int res = 0; int j = 0; int k = 1; int c=sum[j]+sum[k]; while(sum[k]<=n){ if(c<n){ k++; c+=sum[k]; } else if(c>n){ c-=sum[j]; j++; } else { res++; k++; c+=sum[k]; c-=sum[j]; j++; } } System.out.println(res); n = scan.nextInt(); } } }
第一次的时候将数组开在了外面并且设为static于是莫名其妙就RUNTIME ERROR了...
改过来之后就AC了...
相关文章推荐
- 正式工作的前奏——一个Java程序员的实习总结(1)
- impala集成kerberos问题一例 推荐
- 【笔记】CentOS安装Sublime Text 3
- 全志A20[android教程]-红外遥控器调试
- ”爱情密码“帖的故事--从实例中学懂摩尔密码
- Google MapReduce
- 一个由两个长的如此相像的字引起的问题
- css学习笔记——css样式总结
- OciDBI.cpp
- The Google File System
- 2013 蓝桥杯 C.A组 02题(暴力)
- 黑马程序-常见异常对象
- LeetCode(一)关于GrayCode的实现
- 【笔记】CentOS升级Python2.7及安装pip
- samba的安装(tar.gz方式)
- 仿jdk的ArrayList实现
- Intent中的四个重要属性——Action、Data、Category、Extras
- Google Bigtable
- /dev/tty
- 归并排序