题意:

把n拆成k个不同素数的和,有多少种拆法。

解法:

打表后dp即可,这个dp的问题可以归纳为:在n个数中选k个数,使得和m的方案数

 #include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
bool visit[];
int prime[];
int f[][]; int prime_num = ;
void generate_prim(int n) {
memset(visit, true, sizeof(visit));
for (int i = ; i <= n; ++i) {
if (visit[i] == true) prime[++prime_num] = i;
for (int j = ; ((j <= prime_num) && (i * prime[j] <= n)); ++j) {
visit[i * prime[j]] = false;
if (i % prime[j] == ) break;
}
}
return;
} void generate_plan() {
generate_prim();
f[][] = ;
for (int k= ; k < prime_num; k++) {
for (int i = ; i >= ; i--) {
int UP = lower_bound(prime, prime + k, i) - prime + ;
for (int j = ; j < UP; j++) {
if (prime[k] > i)break;
f[i][j] += f[i - prime[k]][j - ];
}
}
}
return;
} int main() {
generate_plan();
int n, m;
while (scanf("%d%d", &n, &m) && n&&m) {
printf("%d\n", f[n][m]);
}
return ;
}

最新文章

  1. mysql5.5手册读书日记(3)
  2. JSP和Server的相互转化
  3. (十一) 一起学 Unix 环境高级编程 (APUE) 之 高级 IO
  4. 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。
  5. Android程序的安全系统【转】
  6. [原]H264帧内预测
  7. c++中的名字查找
  8. 流动python - 什么是魔术方法(magic method)
  9. Demo of Python &amp;quot;Map Reduce Filter&amp;quot;
  10. AVFoundation自定义拍照
  11. CSS3的新特性
  12. Jupyter(Python)中无法使用Cache原理分析
  13. requireJS(版本是2.1.15)学习教程(一)
  14. Java反射+简单工厂模式总结
  15. Win10系列:VC++媒体播放
  16. forever 启动nodejs
  17. 20155210 Exp7 网络欺诈防范
  18. element-ui打包和运行报错处理
  19. Jenkins集成selenium
  20. Memcached append 命令

热门文章

  1. java Map排序问题
  2. JAVA编程学习之JAVA集合
  3. HDU 6599 I Love Palindrome String (回文树+hash)
  4. Go语言实现:【剑指offer】数组中只出现一次的数字
  5. 【MySQL 线上 BUG 分析】之 多表同字段异常:Column ‘xxx’ in field list is ambiguous
  6. 《Head first设计模式》之策略模式
  7. CentOS安装-(CentOS7)最小化安装
  8. linux 手工释放内存 高内存 内存回收 方法思路
  9. git学术
  10. 查看Linux系统内存、CPU、磁盘使用率和详细信息