2013年长沙网络赛G题
来源:互联网 发布:mac win10 iso 下载 编辑:程序博客网 时间:2024/05/16 02:02
题目:http://acm.zju.edu.cn/changsha/showProblem.do?problemId=28
题意:给一个数n,范围是[2,80000],使用加,乘运算和最多3个素数,有多少种方法使得结果恰好等于n。
分析:先素数筛选,然后我们可以看出,设有3个素数a,b,c,那么有如下几种情况。
a + b + c = n;
a + b = n;
a + b*c = n;
a*b = n;
a*b*c = n;
a = n;
那么我们可以用背包的思想来预处理,然后询问即可。
#include <iostream>#include <string.h>#include <stdio.h>using namespace std;const int N = 80005;const int MOD = 1000000007;bool prime[N];int p[N],cnt;int dp1[N][4],dp2[N][4];void isprime(){ cnt = 0; int i,j; memset(prime,true,sizeof(prime)); for(i=2;i<N;i++) { if(prime[i]) { p[cnt++] = i; for(j=i+i;j<N;j+=i) { prime[j]=false; } } }}void Work(){ dp1[0][0] = 1; dp2[1][0] = 1; for(int i=0; i<cnt; i++) { for(int j=0; j<N&&p[i]+j<N; j++) { for(int k=0; k<=2; k++) dp1[j+p[i]][k+1] = (dp1[j+p[i]][k+1] + dp1[j][k]) % MOD; } } for(int i=0; i<cnt; i++) { for(int j=0; j<N && p[i]*j<N; j++) { for(int k=0; k<=2; k++) dp2[j*p[i]][k+1] = (dp2[j*p[i]][k+1] + dp2[j][k]) % MOD; } } for(int i=0; i<cnt; i++) { for(int j=0; j<N&&j+p[i]<N; j++) dp1[j+p[i]][3] = (dp1[j+p[i]][3] + dp2[j][2]) % MOD; }}int main(){ isprime(); Work(); int n; while(~scanf("%d",&n)) { int ans = 0; for(int i=1; i<=3; i++) { ans = (ans+dp1[n][i]) % MOD; if (i != 1) ans = (ans+dp2[n][i]) % MOD; } printf("%d\n",ans); } return 0;}
- 2013年长沙网络赛G题
- 2013年长春网络赛
- ZOJ Candies 2013年长沙赛区网络赛
- ZOJ Goldbach 2013年长沙赛区网络赛
- ZOJ 3856 Goldbach FFT计数 2013年长沙网络赛
- ZOJ XXXX Candies(13年长沙网络赛-J题-数学)
- HDU4565-2013年长沙邀请赛A题
- HDU4565 && 2013年长沙邀请赛A题
- HDU4565-2013年长沙邀请赛A题
- 2013年长春区域赛
- HDU 4768 Flyer(13年长春网络赛-J题-二分)
- HDU 4768 Flyer(13年长春网络赛-J题-二分)
- HDU 4275 Color the Tree 树的Hash 2012年长春网络赛I题
- HDU 5446 Unknown Treasure (2015年长春赛区网络赛J题)
- HDU 5441 Travel (2015年长春赛区网络赛E题)
- HDU 5438 Ponds (2015年长春赛区网络赛B题)
- HDU 5437 Alisha’s Party (2015年长春赛区网络赛A题)
- HDU 5442 Favorite Donut (2015年长春赛区网络赛F题)
- vb.net 关于log的简单代码
- 数据结构C++算法实现2 - 归并排序1
- 金融系统中PBOC/EMV的TLV的算法实现(含C++/C#)
- 【算法】深度优先搜索(DFS)I
- 让你的开发变得更加快起来
- 2013年长沙网络赛G题
- Spring如何处理线程并发
- 登山
- 新建项目(failed to import..)解决方法
- ios页面间传递参数四种方式
- 组合数递推模版
- 自己写代理服务器
- MFC dll注入框架
- 今天遇到了一个非常恶心的错误