HDU—— 1028
来源:互联网 发布:606写卡器安装软件 编辑:程序博客网 时间:2024/06/13 03:50
1028 Ignatius and the Princess III
题意:将一个整数分解成几个整数相加的形式,有多少种分解方法。
解题思路:母函数(模板直接套用)。不理解母函数的请查阅相关资料。
Code:
#include <iostream>using namespace std;const int len = 1e4+5;int C1[len],C2[len];int main(){ int N; while(cin>>N) { for(int i = 0; i<=N; i++) { C1[i] = 1,C2[i] = 0; } for(int i = 2; i<=N; ++i) { for(int j = 0; j<=N; ++j) { for(int k = 0; k+j<=N; k += i) { C2[j+k] += C1[j]; } } for(int j = 0; j<=N; j++) C1[j] = C2[j], C2[j] = 0; } cout<<C1[N]<<endl; } return 0;}
1398 Square Coins
题意:有1^2,2^2,3^2.......17^2等17中硬币,先给出一个数字用这些硬币去组合,共有多少种组合方式。
解题思路:母函数模板k+=i变成了k+=i*i,详见代码。
Code:
#include <iostream>using namespace std;const int len = 1e4+5;int C1[len],C2[len];int main(){ int N; while(cin>>N && N) { for(int i = 0; i<=N; i++) C1[i] = 1,C2[i] = 0; for(int i = 2; i<=17; i++) { for(int j = 0; j<=N; j++) for(int k = 0; k+j<=N; k += i*i) { C2[j+k] += C1[j]; } for(int j = 0; j<=N; j++) C1[j] = C2[j], C2[j] = 0; } cout<<C1[N]<<endl; } return 0;}
0 0
- HDU—— 1028
- HDU 2112——HDU Today
- HDU——2107 Founding of HDU
- HDU——2108 Shape of HDU
- hdu 2112 ——HDU Today
- HDU 2110——Crisis of HDU
- HDU—2122HDU Today(Dijsktra)
- hdu——4370
- hdu——2018
- hdu——1004
- hdu——2027
- HDU——1198
- hdu——War
- HDU——Queuing
- hdu——1004
- hdu——5166
- HDU——1001
- hdu—2832
- IPVS 学习笔记 一
- UML类图几种关系的总结
- Java接口和继承例子
- android获取签名,兼容5.0
- 【后缀数组】【URAL 1297】Palindrome
- HDU—— 1028
- Android批量打包提速 - 1分钟900个市场不是梦
- Snort 中文手册
- UITableView中Cell重用机制导致内容重复解决方法
- 图片圆角处理
- 我心有猛虎,细嗅蔷薇下
- 如何修改Linux命令提示符
- 我心有猛虎,细嗅蔷薇下
- IOS面试问题总结