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 ...
随机推荐
- ios swift 2 新的OptionSetType使用方法
http://www.rockhoppertech.com/blog/swift-2-optionsettype/?utm_source=tuicool 主要使用方法如下 components([NS ...
- gridview 实现鼠标悬浮行提示行中列的信息
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { for (int i = ...
- repeater 相关问题
1.如果添加控件会显示代码有问题,把双引号(“)改为单引号(‘)就可以了
- codeforces 507B. Amr and Pins 解题报告
题目链接:http://codeforces.com/problemset/problem/507/B 题目意思:给出圆的半径,以及圆心坐标和最终圆心要到达的坐标位置.问最少步数是多少.移动见下图.( ...
- oracle简历自增序列(转)
步骤:1.创建序列 2.创建触发器. 语法解析:create sequence TB_CODE_SEQUENCEminvalue 1maxvalue 99999999999999999999999 ...
- mybatis参数错误 Parameter '×××' not found. Available parameters are [0, 1, param1, param2]
报错的代码 @Update("update staff_info set ApplyState = #{applyState} where Id = #{userId}") int ...
- 【leetcode】Combinations (middle)
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...
- 【leetcode】Binary Tree Right Side View(middle)
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...
- SQL Server 2008 R2 安装出错:Could not open key
安装Sql Server 2008 R2 企业版出现错误提示无法继续安装,错误提示为: Could not open key: UNKNOWN\Components\7ABFE44842C12B390 ...
- Jquery如何判断Radiobutton是否选中
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...