NUC1921 E.迷雾森林【筛选法】
E.迷雾森林
时间限制: 1000ms 内存限制: 65535KB
问题描述
【HuJie】今天的任务是去灵隐寺后的竹林里拾干柴,最近天越来越冷,天上的乌云聚集不散。天灰蒙蒙的,走进竹林里时,树叶沙沙作响,他一直觉得这个林子很奇怪,雪天依然树叶常青。等他捡的差不多了,正打算将干柴捆好背起来时,在他面前突然跳出一只大大的【Mon-Gee Gee】猴子。“OMG,我不会遇到孙悟空了吧,但是怎么没有金箍棒呢”【HuJie】还在愣愣的想着。【Mon-Gee Gee】开口了:“小和尚,我怎么从来没有见过你?新来的吧?”【HuJie】紧张的点点头。【Mon-Gee Gee】咧嘴一笑:“新来的就要懂规矩,本大王先问你一个问题。”【HuJie】当然不怕一只猴子,于是说“你说吧,什么题?” 【Mon-Gee Gee】开了口:“我们猴子家族冬天要储藏食物过冬,今年猴子们采摘了很多坚果,需要分开存放在两个不同的树洞里。不过呢,我们猴子家族有个传统,每个储藏事物的树洞里,坚果的总数必须是素数,否则非常不吉利。现在我有n个坚果,你告诉我有多少种不同的分法。你要是答对了,我就可以答应你一件事……”【HuJie】张口就答:“不就是……”【Mon-Gee Gee】马上插了一句:“答错了可就,嘿嘿嘿……”【HuJie】一听这话吓了一跳,赶忙着手计算不敢答错,聪明的你能帮他算出问题的答案吗?
输入描述
首先输入询问次数T(1≤T≤100),之后T行每行一个正整数n(1≤n≤1000)。
输出描述
输出将n拆分成两个素数之和的方法数。
样例输入
3
2
4
10
样例输出
0
1
2
来源
2015中北大学‘计蒜客’杯新生赛
提示
2不能被拆分成两个素数和的形式,故输出0;4可以被拆分成4=2+2的形式,输出1;10可以被拆分成10=3+7和10=5+5的形式,输出2。
问题分析:
这个题与HDU2098类似,拿过来修改一下就可以了用。需要注意的是,条件有点不同。
解决本问题,首先用Eratosthenes筛选法求得必要的素数,然后用试探法求可分解的个数。对于输入的偶数sum而言,如果能够分解成两个素数之和,其中一个必然小于或等于sum/2,基于这个原理进行分解计数,最后求出所有的组合。
题目中所讲的故事,似乎与本题目的关系没那么大,绕了一大圈而已。
程序说明:
参见链接博文。
参考链接:HDU2098 分拆素数和
AC的C++程序如下:
#include <iostream>
#include <cmath>using namespace std;const int N = 1000;
int prime[N+1];// Eratosthenes筛选法
void sieveofe(int p[], int n)
{int i, j;p[0] = 0;p[1] = 0;p[2] = 1;// 初始化for(i=3; i<n; i++) {p[i++] = 1;p[i] = 0;}int max = sqrt(n);for(i=3; i<=max; i++){if(p[i]) {for(j=i+i; j<=n; j+=i) //进行筛选p[j]=0;}}
}int main()
{int n, sum, count;sieveofe(prime, N);cin >> n;while(n--) {cin >> sum;count = 0;for(int i=2; i<=sum/2; i++) {if(prime[i] && prime[sum-i])count++;}cout << count << endl;}return 0;
}
NUC1921 E.迷雾森林【筛选法】相关推荐
- NUC1019 数素数【素数筛选法】
数素数 时间限制: 1000ms 内存限制: 65536KB 问题描述 素数是的只能被1和它本身整除的自然数.判断一个数是素数的方法是使用2到该数的平方根的素数除它,若有能整除的则该数不是素数. 输入 ...
- 筛选法求N以内的所有素数
素数:一个数只能被1和它本身整除的数.2是最小的素数 #include <iostream> using namespace std; #define NUM 100 char isPri ...
- python使用集合实现筛选法求素数-python素数筛选法浅析
原理: 素数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数.在加密应用中起重要的位置,比如广为人知的RSA算法中,就是基于大整数的因式分解难题,寻找两个超大的素数然后相乘作 ...
- 用筛选法求100以内的素数(数组)
用筛选法求100以内的素数,要求使用数组. #include "stdafx.h" #include<iostream> using namespace std; in ...
- 高效的判断素数---筛选法
前言 筛选法是啥呢? 举个例子: 2是质数那么2x2,2x3,2x4-都不是质数 3是质数那么3x2,3x3,3x4,3x5-都不是质数. 依次类推---- 简言之: 质数的倍数都不是质数 这就是筛选 ...
- python100以内孪生素数_python用递归筛选法求N以内的孪生质数(孪生素数)
本人最近读完一本书<质数的孤独>,里面讲到孪生质数,就想查一下孪生质数的分布情况.其中主要用到了计算质数(素数)的方法,搜了一下,排名前几的都是用for循环来做的,感觉略微麻烦了一些,在比 ...
- JavaScript实现sieveOfEratosthenes埃拉托色尼筛选法算法(附完整源码)
JavaScript实现sieveOfEratosthenes埃拉托色尼筛选法算法(附完整源码) sieveOfEratosthenes.js完整源代码 sieveOfEratosthenes.js完 ...
- 因子和(类素数筛选法)
(忙着A题,总结会慢慢跟上~) 1409: 因子和 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Descrip ...
- c语言学习之用筛选法求100之内的素数。
用筛选法求100之内的素数 首先我们来看一下什么是素数: 素数又称质数.一个大于1的自然数,除了1和它自身外,不能被其他自然数整除: 介绍一下筛选法: 筛选法所谓"筛选法"指的是& ...
最新文章
- OpenJDK 编译-Linux环境
- 无法删除当前已连接的用户处理办法
- struts2框架入门
- xxl-job使用实例
- 浅谈 Vue 项目优化
- [css] CSS3新增伪类有哪些并简要描述
- sr650服务器cpu型号,至强Gold 联想ThinkSystem SR650评测
- VScode中编写运行C/html文件
- Python--day26--封装和@property
- 面试官:你是如何调用 wait() 方法的?使用 if 还是 while?别答错了!
- 抓linux肉鸡漏洞,利用MS08067远程溢出漏洞抓肉鸡(3)
- RLS实现求解最小二乘确定性正则方程
- Spring学习02-Spring中的设计模式(一)
- 苹果计算机符号怎么打开,Mac电脑如何输入command(⌘)、option(⌥)、shift(⇧)等特殊符号...
- 读《弗洛伊德:作家与白日梦》
- 从0开始的编程学习计划
- 【测试表征】你想要的表征,这里全都有!(一)
- 112.Android 简单的群发微信,群发文本和图片,一键群发
- python中找最小值,使用循环python查找最小值
- PaaS将吞噬云计算?Kubernetes的市场冲击波
热门文章
- JavaWeb——jsp原理
- SpringCloudAlibabaSentinel入门教程
- 走在网页游戏开发的路上
- Windows10电脑线 下hosts文件地址
- IDEA(2018版)实用快捷键整理
- linux压缩隐藏文件,Linux下查看压缩文件内容的10种方法(小结)
- android 1141错误,Android Studio中报错的问题
- python更改数据框指定位置的数据_python – 移动数据框列并更改列顺序
- Python基础——continute与break(循环控制)
- LeetCode 300. 最长上升子序列(动态规划)