ZOJ Goldbach 2013年长沙赛区网络赛
迟到了一天的AC。。。。
思路:
先把单个素数 或着 两个素数能组成的情况预处理一下,然后对于给出的 n,拿第三个素数去和两个素数的情况匹配,最后要注意去重。
详情见代码。
因为手残少敲了一个 else ,Debug了一晚上。。。
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio> using namespace std; const long long int INF = 1000000007; bool MarkVisit[80010] = {false};
long long int pri[80010];
long long int s[80010] = {0};
long long int sm[80010] = {0};//a*a
long long int sa[80010] = {0};//a+a
long long int dm[80010] = {0};//a*b
long long int da[80010] = {0};//a+b int main()
{
int i,j; int top = 0; for(i = 2; i <= 80000; ++i)//挫到荼靡的素数筛。。。
{
if(MarkVisit[i] == false)
{
pri[top++] = i; for(j = i+i; j <= 80000; j += i)
{
MarkVisit[j] = true;
}
}
} for(i = 0; i < top; ++i)//预处理
{
s[pri[i]]++;//一个素数的情况 if(pri[i]*2 <= 80000)
{
sa[pri[i]*2]++;//两个相同的素数相加的情况
}
if(pri[i]*pri[i] <= 80000)
{
sm[pri[i]*pri[i]]++;//两个相同的素数相乘的情况
} for(j = i+1; j < top; ++j)
{
if(pri[i] + pri[j] <= 80000)
{
da[pri[i] + pri[j]]++;两个不相同的素数相加的情况
} if(pri[i]*pri[j] <= 80000)
{
dm[pri[i]*pri[j]]++;//两个不相同的素数相乘的情况
}
}
} int n; long long int tempsum, sum; while(scanf("%d",&n) != EOF)
{
sum = s[n] + dm[n] + da[n] + sa[n] + sm[n];//先把一个或两个素数的情况统计出来 for(i = 0,tempsum = 0; i < top; ++i)
{
if(n%pri[i] == 0)
{
if(n == pri[i]*pri[i]*pri[i])//如果三个数相同 则此种情况重复计算一次 *3 补成三次
{
tempsum += sm[n/pri[i]]*3 + dm[n/pri[i]];
}
else tempsum += sm[n/pri[i]]*2 + dm[n/pri[i]];//如果只有来两个相同 则此种情况重复计算两次。
//因为另一种单独计算 所以只需对其中一次*2 补成三次 }
if(n >= pri[i])
{
sum += sm[n-pri[i]];//+ && *都出现的不会重复
sum += dm[n-pri[i]];
sum %= INF; if(n == pri[i]*3)//此种情况 和 * 形同 不再赘述
{
tempsum += da[n-pri[i]] + sa[n-pri[i]]*3; } else tempsum += da[n-pri[i]] + sa[n-pri[i]]*2;
//就是因为少了这个else...险些把这一晚上都废了。。。
}
else break;
}
sum %= INF;
sum += tempsum/3;//因为每一种都出现了3次
sum %= INF; printf("%lld\n",sum);
}
return 0;
}
ZOJ Goldbach 2013年长沙赛区网络赛的更多相关文章
- HDU 4793 Collision (解二元一次方程) -2013 ICPC长沙赛区现场赛
题目链接 题目大意 :有一个圆硬币半径为r,初始位置为x,y,速度矢量为vx,vy,有一个圆形区域(圆心在原点)半径为R,还有一个圆盘(圆心在原点)半径为Rm (Rm < R),圆盘固定不动,硬 ...
- HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...
- HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)
HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛) Panda Time Limit: 10000/4000 MS (Java/Others) Memory Limit: ...
- ICPC 2018 徐州赛区网络赛
ACM-ICPC 2018 徐州赛区网络赛 去年博客记录过这场比赛经历:该死的水题 一年过去了,不被水题卡了,但难题也没多做几道.水平微微有点长进. D. Easy Math 题意: ...
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 M. Frequent Subsets Problem【状态压缩】
2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 M. Frequent Subsets Problem 题意:给定N和α还有M个U={1,2,3,...N}的子集,求子集X个数,X满足:X是U ...
- HDU 5875 Function -2016 ICPC 大连赛区网络赛
题目链接 网络赛的水实在太深,这场居然没出线zzz,差了一点点,看到这道题的的时候就剩半个小时了.上面是官方的题意题解,打完了才知道暴力就可以过,暴力我们当时是想出来了的,如果稍稍再优化一下估计就过了 ...
- ACM-ICPC 2018 徐州赛区(网络赛)
目录 A. Hard to prepare B.BE, GE or NE F.Features Track G.Trace H.Ryuji doesn't want to study I.Charac ...
- ACM-ICPC 2018 沈阳赛区(网络赛)
D.Made In Heaven One day in the jail, F·F invites Jolyne Kujo (JOJO in brief) to play tennis with he ...
- 2013区域赛长沙赛区现场赛 K - Pocket Cube
K - Pocket Cube Time Limit:10000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Su ...
随机推荐
- Swift 2.0初探:值得注意的新特性
转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...
- android_launcher的源码详细分析
转载请注明出处:http://blog.csdn.net/fzh0803/archive/2011/03/26/6279995.aspx 去年做了launcher相关的工作,看了很长时间.很多人都在修 ...
- poj 3009 Curling 2.0 (dfs )
Curling 2.0 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11879 Accepted: 5028 Desc ...
- Application 可以存储全局变量
Application.Lock(); Application["Name"]="小亮" Application.UnLock(); Response.Writ ...
- VS2010 ReportViewer导出文件下载保存不能识别文件类型
今天测试项目时,突然发现导出报表下载保存的保存,不能识别文件的类型,文件名称为:.xls[3] 检查代码发现在指定报表路径时多了一个方法: ReportViewer1.LocalReport.Load ...
- Objective-C 数组、可变数组
数组的使用方式 下面是数组:类型NSArray #import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int ...
- php array_combine 把array的默认键改成指定的字符串
array(2) { [0] => array(6) { [0] => string(1) "1" [1] => string(10) "1470650 ...
- 表单同时有中文字段和文件上传,加上enctype="multipart/form-data"后导致的中文乱码问题
因为一个表单需要同时上传字段和文件,所以加上enctype="multipart/form-data",但是上传后的中文字段变成了乱码. 把enctype="multip ...
- win7 下的open live writer代码插件
open live writer 是博客园官方推荐的编辑器.恰好被它的各种便利吸引住了,于是花点时间研究一下,结果又用了好长时间,因为代码插件一时安装不了.在这里推荐小伙伴们可以先去看看这篇博文:ht ...
- qemu cow镜像分析
最近研究了以下qemu最简单的read on direct 镜像格式cow,在稀疏文件的模式下,这种方式还是比较简单,而且有优势的.其优势主要体现在云计算环境中,不需要用到qcow2的那些诸如内部快照 ...