CF735D Taxes 哥德巴赫猜想\判定素数 \进一步猜想
http://codeforces.com/problemset/problem/735/D
题意是。。一个数n的贡献是它的最大的因子,这个因子不能等于它本身
然后呢。。现在我们可以将n拆成任意个数的整数相加,每个数最小只能拆成2,
单独计算每个数的贡献,然后加起来使他的贡献最小。。那么我们肯定是拆成质数最赚
因为质数对答案的贡献是1...
所以现在这个问题变成了把一个数拆成最少个数的质数
那么我们不知道最少能拆成多少个质数啊。。
我一开始想的是你每次找最接近这个数的质数。。一直找下去应该是可以的。。但是我不知道最后剩下一个合数怎么办
也不知道这种情况会不会发生
到这里我没有探索也没有画图就放弃了。。因为我发现。。预处理2e9的素数好像不太可能啊。。不过这里有个隐藏的前提
那就是如果预处理2e9的素数是必须的话。。那我们无法做到。。那么就不用做这个题了。。但是我们现在并不确定题目的
解法是一定需要这个预处理的。。所以我们可以选择继续探索
Tip:当你无法解决手头的问题。。那么你可以去找一道相似的题目或者分解成一些子问题去一道一道地做
先解决其他的题目
对于2,本身就是质数不用分解
对于3,本身就是质数不用分解
对于4,可以分解成2,2 因为题目要求最小是2,这里如果忘记不回顾的话。。很炸,要习惯性地检查题目的条件
对于5,可以分解成2,3
对于6,可以分解成3,3
对于7,可以分解成3,2,2
对于8,可以分解成5,3
对于9,可以分解成2,7
对于10,可以分解成5,5
这样枚举很累的。。我们写程序打一个表
打表的程序如下所示
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
bool check(int x){
int i;//小心爆int
for(i=;i*i<=x;++i){
if(x%i==) return false;
}
return true;
}
int rec[];
int cur;
bool fnd;
void dfs(int x,int dep){
int i;
if(x==) return;
if(x==){
printf("val:%d--",cur);
for(i=;i<dep;++i){
printf("%d ",rec[i]);
}
printf("\n");
fnd=true;
return;
}
for(i=x;i>=&&!fnd;--i){
rec[dep]=i;
if(i==||check(i))
dfs(x-i,dep+);
}
}
int n;
int main(){
scanf("%d",&n);
int i;
for(i=;i<=n;++i){
fnd=false;
cur=i;
dfs(i,);
}
return ;
}
打表之后我们发现了一个很大的问题。。


最多不超过3个数。。
我们再观察一下奇偶性。。然后就能发现。。偶数总是能分解成两个质数
从表中看出。。这些质数距离不太固定。。因此你每次找最近的质数。。应当是不太对的哦
既然偶数总是能分解成两个质数,不相信的话我们可以专门打一个表啊

全部是两项。。
那么对于偶数。。特判2就可以得到结果了
但是对于奇数呢。。由于最小的项为2。。。我们不能
考虑-1,然后分解一个偶数。。
我们要考虑-2之后是一个什么情况。。奇数减去2之后仍然是一个奇数
如果这时它是一个质数。。那么我们就已经成功地把这个数分解成了两个质数
如果这时它不是一个质数。。那么我们仍然把它看成奇数。。分出一个1来。。剩下的一个偶数就能分解成两个质数
分出来的这个1和减去的2合并成3,哈哈。。正好3也是一个质数。。要不然说不定要构造一个质数呢
3是一个质数。。而剩下的那个偶数可以分解成两个质数。。一共三个质数
最后我们还要考虑不用分解的情况。。它本身就是一个质数你还分解它干什么。。
通过这个题我们可以看出来打表看规律是解决数论问题的一个非常重要的手段
并且我们要熟悉快速打表。。而且打表也不是一定正确的。。对于我们发现的一个偶数一定能分解成两个质数这个结论
他是一个哥德巴赫猜想。。我们可以认为在ll内它都是正确的。。并且根据群巨打表的情况在ll范围内。。相邻两个
素数的最大距离gap大概是778...所以说暴力找的话也是很好找的
代码虽然简单。。但是思路却要开阔,敢于探索。。不能太笨纯手推。。答案来之不易啊
CF735D Taxes 哥德巴赫猜想\判定素数 \进一步猜想的更多相关文章
- Codeforces Round #382 (Div. 2) D. Taxes 哥德巴赫猜想
D. Taxes 题目链接 http://codeforces.com/contest/735/problem/D 题面 Mr. Funt now lives in a country with a ...
- D. Taxes 哥德巴赫猜想
http://codeforces.com/contest/735/problem/D 这题其实我还不是很懂,那个只是猜想,然而却用了. 只想说说找到第一小于n的素数这种思路是不行的. 121 = 1 ...
- Codefroces 735D Taxes(哥德巴赫猜想)
题目链接:http://codeforces.com/problemset/problem/735/D 题目大意:给一个n,n可以被分解成n1+n2+n3+....nk(1=<k<=n). ...
- ACM_哥德巴赫猜想(素数筛)
哥德巴赫猜想 Time Limit: 2000/1000ms (Java/Others) Problem Description: 哥德巴赫猜想大概是这么一回事:“偶数(>=4) == 两个质数 ...
- Codeforces735D Taxes(哥德巴赫猜想)
题意:已知n元需缴税为n的最大因子x元.现通过将n元分成k份的方式来减少缴税.问通过这种处理方式需缴纳的税费. 分析: 1.若n为素数,不需分解,可得1 2.若n为偶数,由哥德巴赫猜想:一个大于2的偶 ...
- Codeforces 735D:Taxes(哥德巴赫猜想)
http://codeforces.com/problemset/problem/735/D 题意:给出一个n,这个n可以分解成 n = n1 + n2 + -- + nk,其中k可以取任意数.要使得 ...
- 洛谷 P1579 哥德巴赫猜想(升级版)【筛素数/技巧性枚举/易错】
[链接]:https://www.luogu.org/problemnew/show/P1579 题目背景 1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇 ...
- 洛谷P1579 哥德巴赫猜想(升级版)【水题+素数】
1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和.质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是质数,因为 ...
- code forces 382 D Taxes(数论--哥德巴赫猜想)
Taxes time limit per test 2 seconds memory limit per test 256 megabytes input standard input output ...
随机推荐
- 数据结构——二叉查找树、AVL树
二叉查找树:由于二叉查找树建树的过程即为插入的过程,所以其中序遍历一定为升序排列! 插入:直接插入,插入后一定为根节点 查找:直接查找 删除:叶子节点直接删除,有一个孩子的节点删除后将孩子节点接入到父 ...
- Django环境搭建
1.安装好Python 2.7.10 2.下载解压Django Django-1.9.2.tar.gz cmd cd到解压缩目录(***) python setup.py install 3.检测是否 ...
- Filezilla无法确定拖放操作目标,由于shell未正确安装__解决办法
开始--运行--输入regsvr32空格 然后将filezila安装目录下的fzshellext.dll拖拽到[regsvr32空格]之后 注:64位电脑注意拖拽的文件为fzshellext_64 ...
- [Android] how to get facebook profile
Bundle params = new Bundle(); params.putString("fields", "id,email,gender,cover,pictu ...
- Tcpdump的详细用法
1. TCPDump介绍 TcpDump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来 ...
- STL:原地归并排序模板(InplaceMergeSort)
原理:就是在归并排序上改进,以时间复杂度换空间复杂度,利用元素反转完成排序 具体过程如下: 具体操作看代码吧,应该没什么难度,主要是reverse要反转三次 typedef int Position; ...
- code vs1262 不要把球传我(组合数学) 2012年CCC加拿大高中生信息学奥赛
1262 不要把球传我 2012年CCC加拿大高中生信息学奥赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 De ...
- jquery.validate ajax提交
页面引入jquery.validate.min.js <style> //引入错误格式 label.error { display: block; ma ...
- 【leetcode】Distinct Subsequences(hard)
Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...
- PHP如何判断远程图片文件是否存在
<?php $url = 'http://www.nowamagic.net/images/test.jpg'; if( @fopen( $url, 'r' ) ) { echo 'File E ...