这题跟上两题也差不多。

把150以内的素数找出来,把素数的值看做硬币的面值,每个硬币的个数即ceil(150/prime[i]),因为再多也没用,最多组成n=150就行了,所以又回到了找硬币问题。用生成函数解之。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 207 int prime[N],flag[N],num[N];
int c[],tc[];
int ci; void doit()
{
int i,j,n;
ci = ;
for(i=;i<=;i++)
flag[i]=;
for(i=;i<=;i++)
{
if(flag[i])
prime[ci++]=i;
for(j=;j<ci&&i*prime[j]<=;j++)
{
flag[i*prime[j]]=;
if(i%prime[j]==)
break;
}
}
} int main()
{
doit();
int i,j,k,t,n;
int maxi = ;
for(i=;i<ci;i++)
{
num[i] = /prime[i]+;
maxi += prime[i]*num[i];
}
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=;i<=maxi;i++)
c[i] = tc[i] = ;
for(i=;i<=prime[]*num[];i+=prime[])
c[i] = ;
for(i=;i<ci;i++)
{
for(j=;j<=maxi;j++)
{
for(k=;k+j<=maxi && k<=prime[i]*num[i];k+=prime[i])
tc[k+j] += c[j];
}
for(j=;j<=maxi;j++)
{
c[j] = tc[j];
tc[j] = ;
}
}
printf("%d\n",c[n]);
}
return ;
}

最新文章

  1. Emergency(山东省第一届ACM省赛)
  2. mysql转换引擎的方法
  3. PHP实战开发教程
  4. ubantu下重启apache
  5. 不用SWIG,Go使用C++代码的方式
  6. openjdk7之编译和debug
  7. 《java入门第一季》之泛型引入
  8. SaxReader读取xml
  9. spring boot本地调试服务器部署项目
  10. ansible的tests
  11. BZOJ.2616.SPOJ PERIODNI(笛卡尔树 树形DP)
  12. sourceTree如何不用注册就使用
  13. 2018-08-14 中文代码之Spring Boot实现简单REST服务
  14. lightoj1197 素数双筛,可以参考poj的那题双筛
  15. Linux进程相关命令使用场景
  16. 关于WebAPI跨域踩到的一点坑
  17. elasticsearch学习之根据发布时间设置衰减函数
  18. 调研getfit
  19. unity编辑器教程
  20. Java基础知识强化之集合框架笔记78:ConcurrentHashMap之 ConcurrentHashMap、Hashtable、HashMap、TreeMap区别

热门文章

  1. IT外包行业与职业发展
  2. Eclipse 出现Some sites could not be found. See the error log for more detail.错误 解决方法
  3. [Architecture Pattern] Repository实作查询功能
  4. css导航栏
  5. JavaScript基础12——js的方法重载
  6. Atitit。&#160;&#160;工作流引擎的发展趋势
  7. Web安全开发注意事项
  8. SharePoint 2010 ——自定义上传页面与多文件上传解决方案
  9. RecyclerView添加头部和底部视图的实现
  10. 【原】UI随设备旋转从iOS6到iOS8的适配策略