迟到了一天的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年长沙赛区网络赛的更多相关文章

  1. HDU 4793 Collision (解二元一次方程) -2013 ICPC长沙赛区现场赛

    题目链接 题目大意 :有一个圆硬币半径为r,初始位置为x,y,速度矢量为vx,vy,有一个圆形区域(圆心在原点)半径为R,还有一个圆盘(圆心在原点)半径为Rm (Rm < R),圆盘固定不动,硬 ...

  2. HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)

    HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...

  3. HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)

    HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛) Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: ...

  4. ICPC 2018 徐州赛区网络赛

    ACM-ICPC 2018 徐州赛区网络赛  去年博客记录过这场比赛经历:该死的水题  一年过去了,不被水题卡了,但难题也没多做几道.水平微微有点长进.     D. Easy Math 题意:   ...

  5. 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 ...

  6. HDU 5875 Function -2016 ICPC 大连赛区网络赛

    题目链接 网络赛的水实在太深,这场居然没出线zzz,差了一点点,看到这道题的的时候就剩半个小时了.上面是官方的题意题解,打完了才知道暴力就可以过,暴力我们当时是想出来了的,如果稍稍再优化一下估计就过了 ...

  7. 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 ...

  8. 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 ...

  9. 2013区域赛长沙赛区现场赛 K - Pocket Cube

    K - Pocket Cube Time Limit:10000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Su ...

随机推荐

  1. C++ MPICH

    假设一个C++的MPI程序在单机上能够跑.可是在多机上跑会报下面错误: Fatal error in MPI_Send: Unkown error class , error stack. 解决方法: ...

  2. Gstreamer 中的playback插件

    1. PLAYBACK插件基本介绍 在早期的版本中同时存在playbin和playbin2,但是在最新的版本中,playbin2已经稳定,取代了playbin, playbin不再进行维护.下面是官网 ...

  3. Asp.Net HttpApplication请求管道与Session(一)

    1.请求处理顺序执行事件 /********************请求处理顺序执行事件**********************/ /// <summary> /// 请求入站 /// ...

  4. Android-------------获取手机IP地址

    ##帮助类PhoneNetStateUtil package com.funs.PhoneIPAddress.utils; /**      * 手机联网状态工具类 需要的权限 WIFI时:</ ...

  5. SQL Server2008知识点总结

    1.SQL Server2008基本服务及功能 2.管理SQL Server2008安全:登录.权限.数据库用户.管理角色.服务器角色.管理数据库角色. 3.数据库管理.表管理(临时表和系统表.列值属 ...

  6. "ORA-00942: 表或视图不存在 "的原因和解决方法[转]

    采用Oracle数据库,使用Powerdesigner设计,生成Sql文件导入后查询出现“ORA-00942: 表或视图不存在 ”,很是郁闷,这个问题以前出现过,当初解决了,但因好久没有使用,这次竟然 ...

  7. Objective-C 字符串

    #import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { ...

  8. win8(64位)下memcache安装时报错“ failed to install service or service already installed” 与安装

    解决办法: 1.找到cmd.exe文件(c:\windows\system32\cmd.exe) 2.右键cmd.exe以管理员方式运行 3.把php_memcache.dll放到php的ext目录: ...

  9. CSS定义网页滚动条

    (一)滚动条样式主要涉及到如下CSS属性: overflow属性: 检索或设置当对象的内容超过其指定高度及宽度时如何显示内容overflow: auto; 在需要时内容会自动添加滚动条overflow ...

  10. python bottle使用多个端口(多个进程)提高并发

    我的程序是用python结合bottle框架写的,但bottle自带wsgi原本只是单进程单线程运行模式(Bottle 默认运行在内置的 wsgiref 服务器上面.这个单线程的 HTTP 服务器在开 ...