HDU-4651-Partition
来源:互联网 发布:鼠标灵敏度测试软件 编辑:程序博客网 时间:2024/06/06 08:33
ACM模版
题目链接
HDU 4651 Partition
题解
将n拆分成多个正整数之和,问有多少种拆法?
如5 = 1+1+1+1+1 = 1+1+1+2 = 1+1+3 = 1+4 = 5 = 1+2+2 = 2+3.共7种
公式:
f[n]=∑(-1)^(k-1)(f[n-k(3*k-1)/2]+f[n-k*(3*k+1)/2])
其中n-k*(3*k-1)/2>=0,n-k*(3*k+1)/2>=0;
注意两个条件要分开判断,有大于0的就加上相应的f,不是两个同时成立或者不成立
代码
#include <iostream>using namespace std;// 整数拆分const int MOD = 1e9+7;int dp[100010];void init(){ memset(dp, 0, sizeof(dp)); dp[0] = 1; for (int i = 1; i <= 100000; i++) { for (int j = 1, r = 1; i - (3 * j * j - j) / 2 >= 0; j++, r *= -1) { dp[i] += dp[i - (3 * j * j - j) / 2] * r; dp[i] %= MOD; dp[i] = (dp[i] + MOD) % MOD; if (i - (3 * j * j + j) / 2 >= 0) { dp[i] += dp[i - (3 * j * j + j) / 2] * r; dp[i] %= MOD; dp[i] = (dp[i] + MOD) % MOD; } } } return ;}int main(int argc, const char * argv[]){ int T; int n; init(); cin >> T; while (T--) { cin >> n; cout << dp[n] << '\n'; } return 0;}
0 0
- HDU-4651-Partition
- HDU 4651 Partition
- hdu 4651Partition
- HDU:4651 Partition
- HDU 4651 Partition
- hdu 4651 Partition
- hdu 4651 Partition(公式)
- hdu 4651 Partition 整数划分+公式
- hdu 4651 Partition 多校第五场
- hdu 4651 - Partition(五边形数定理)
- hdu - 4651 - Partition(五边形数定理)
- 【公式题】HDU 4651—— Partition
- hdu 4651 Partition 五边形数定理
- HDU 4651 Partition(整数划分)
- hdu 4651Partition(整数拆分模板题)
- hdu - 4602 《Partition》
- HDU 4602 Partition
- HDU 4062 Partition
- Mongodb 和 spring的整合开发 权限认证 mongotemplate的group mapReduce开发
- 查询方式实例演示
- 专题四 Problem S
- React Native指南汇集了各类react-native学习资源、开源App和组件
- Windows驱动开发之获取系统时间
- HDU-4651-Partition
- Spring注解
- [微信红包]您有一个好友红包未领取
- Hibernate联合主键怎样在xml中配置
- OpenCV坐标系与操作像素的四种方法
- 二维数组的列排序
- linphone-android-客户端APP-工程解读
- Axis2基础入门
- Java泛型解析