Uva1213(线性筛模板+dp)
2024-10-08 05:40:43
题意:
把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 ;
}
最新文章
- mysql5.5手册读书日记(3)
- JSP和Server的相互转化
- (十一) 一起学 Unix 环境高级编程 (APUE) 之 高级 IO
- 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。
- Android程序的安全系统【转】
- [原]H264帧内预测
- c++中的名字查找
- 流动python - 什么是魔术方法(magic method)
- Demo of Python &;quot;Map Reduce Filter&;quot;
- AVFoundation自定义拍照
- CSS3的新特性
- Jupyter(Python)中无法使用Cache原理分析
- requireJS(版本是2.1.15)学习教程(一)
- Java反射+简单工厂模式总结
- Win10系列:VC++媒体播放
- forever 启动nodejs
- 20155210 Exp7 网络欺诈防范
- element-ui打包和运行报错处理
- Jenkins集成selenium
- Memcached append 命令
热门文章
- java Map排序问题
- JAVA编程学习之JAVA集合
- HDU 6599 I Love Palindrome String (回文树+hash)
- Go语言实现:【剑指offer】数组中只出现一次的数字
- 【MySQL 线上 BUG 分析】之 多表同字段异常:Column ‘xxx’ in field list is ambiguous
- 《Head first设计模式》之策略模式
- CentOS安装-(CentOS7)最小化安装
- linux 手工释放内存 高内存 内存回收 方法思路
- git学术
- 查看Linux系统内存、CPU、磁盘使用率和详细信息