题目: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题相关推荐

  1. 2013 ACM/ICPC 长沙网络赛J题

    题意:一个数列,给出这个数列中的某些位置的数,给出所有相邻的三个数字的和,数列头和尾处给出相邻两个数字的和.有若干次询问,每次问某一位置的数字的最大值. 分析:设数列为a1-an.首先通过相邻三个数字 ...

  2. 2015北京网络赛 G题 Boxes bfs

    Boxes Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/contest/acmicpc2015beijingonl ...

  3. hdu5443(2015长春网络赛G题)

    题意: 一个数列,求从L到R的最大值. 思路: 不多说... 代码: #include<cstdio> #include<cstring>int a[20000];int ma ...

  4. ZOJ 3810 A Volcanic Island (2014年牡丹江赛区网络赛B题)

    ZOJ 3810 A Volcanic Island (2014年牡丹江赛区网络赛B题) 1.题目描写叙述:点击打开链接 2.解题思路:本题是四色定理的模板题.只是有几种情况要提前特判一下:n==1直 ...

  5. 2013年上半年网络工程师真题

    2013年上半年网络工程师真题  无答案哟 才考完两天,大家都在找,本人考的系统集成,刚看见群里面发了网工的链接,弄上来,考网工的同志们去看吧,不过有点贵!建议在线看,坐等大神们的答案!最后GOOD ...

  6. 2019ICPC南京网络赛A题 The beautiful values of the palace(三维偏序)

    2019ICPC南京网络赛A题 The beautiful values of the palace https://nanti.jisuanke.com/t/41298 Here is a squa ...

  7. 2020icpc上海赛G题 Fibonacci详解

    Fibonacci(icpc2020上海赛) 链接:icpc2020上海赛G题Fibonacci 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语 ...

  8. 5_竞赛无人机搭积木式编程——以2021年电赛G题植保无人机国奖标准完整复现为例学习

    竞赛无人机搭积木式编程 --以2021年电赛G题植保无人机国奖标准完整复现为例学习 首先我们需要了解下自动飞行任务执行过程几组关键变量的用法与实际作用效果: flight_subtask_cnt用于控 ...

  9. 2019徐州网络赛G

    2019徐州网络赛G 题意 给定s字符串,定义一个回文串的价值是这个回文串中不同字母的个数,求s中所有回文串的价值之和. 思路 马拉车加序列自动机. 代码 #include<bits/stdc+ ...

最新文章

  1. php将关联数组输出到前台,如何使用foreach从PHP中的关联数组输出特定数据
  2. Oracle 10g 中通过DBLink访问MySQL数据库
  3. 【神经网络】Dependency Parsing的两种解决方案
  4. 4.14 | 学习笔记
  5. 查看docker的端口映射情况
  6. 掌握深度学习,为什么要用 PyTorch、TensorFlow 框架?
  7. div中图片下方有边距
  8. [高性能javascript笔记]1-加载和执行
  9. 【Nginx那些事】nginx配置实例(三)动静分离
  10. 让一个元素水平垂直居中的方法
  11. 深度剖析WinPcap之(四)——WinPcap的体系架构(2)
  12. [禅悟人生]鹰和蜗牛都能登上金字塔尖
  13. java实时解析mysql日志,利用maxwell 组件实时监听Mysql的Binlog日志,并且把解析的json格式数据发送到kafka窗口供实时消费...
  14. Linux CentOS 7 下 安装SimHei字体
  15. hibernate 二级缓存 处理
  16. ksu7对讲机调频软件_对讲机写频教程通用版:写频软件的正确操作流程
  17. 扫码枪 android 广播,Android 扫码枪监听封装
  18. 【XSS技巧拓展】————4、浅谈跨站脚本攻击与防御
  19. 网传癸酉本《石头记》之情榜
  20. 深职计算机学院官网,深圳职业中专

热门文章

  1. 高仿真的类-AbstractApplicationContext
  2. 微信支付 - 构建商户端支付成功的回调接口
  3. 算术运算符_四则与取模运算
  4. 对文本的内容进行排序
  5. mybatis注解开发使用二级缓存
  6. propertysource注解 找不到文件_WinXP系统电脑开机提示windows找不到null文件的解决方法...
  7. python与数据库连接的代码_python连接数据库的案例及源代码
  8. 201119阶段二sqlite3
  9. 200804C阶段一变量生存期和结构体
  10. LeetCode 145 ——二叉树的后序遍历