题意:把一个整数N(1 <= N <= 100000)拆分不超过N的正整数相加,有多少种拆法。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651

——>>好经典的问题,但数好大,比赛卡住了。。。

原来,这个问题有个公式计算:

q[i]为第i个广义五边形数。

#include <cstdio>

using namespace std;
const int maxn = 100000;
const int mod = 1000000007;
int p[maxn+10]; void init(){
int i, j, k, l;
long long sum;
p[0] = 1;
for(i = 1; i <= maxn; i++){
sum = 0;
for(j = 1, k = 1, l = 1; j > 0; k++, l = -l){
j = i - (3*k*k - k) / 2;
if(j >= 0) sum += l * p[j];
j = i - (3*k*k + k) / 2;
if(j >= 0) sum += l * p[j];
sum = (sum % mod + mod) % mod;
}
p[i] = sum;
}
} int main()
{
int T, n;
init();
scanf("%d", &T);
while(T--){
scanf("%d", &n);
printf("%d\n", p[n]);
}
return 0;
}

hdu - 4651 - Partition的更多相关文章

  1. hdu 4651 Partition (利用五边形定理求解切割数)

    下面内容摘自维基百科: 五边形数定理[编辑] 五边形数定理是一个由欧拉发现的数学定理,描写叙述欧拉函数展开式的特性[1] [2].欧拉函数的展开式例如以下: 亦即 欧拉函数展开后,有些次方项被消去,仅 ...

  2. HDU 4651 Partition(整数拆分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:给出n.求其整数拆分的方案数. i64 f[N]; void init(){    f[0 ...

  3. hdu 4651 Partition && hdu 4658 Integer Partition——拆分数与五边形定理

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4651 参考:https://blog.csdn.net/u013007900/article/detail ...

  4. HDU 4651 Partition 整数划分,可重复情况

    Partition Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  5. hdu 4651 Partition(整数拆分+五边形数)

    Partition Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. hdu 4651 - Partition(五边形数定理)

    定理详见维基百科....http://zh.wikipedia.org/wiki/%E4%BA%94%E9%82%8A%E5%BD%A2%E6%95%B8%E5%AE%9A%E7%90%86 代码如下 ...

  7. HDU 4651 (生成函数)

    HDU 4651 Partition Problem : n的整数划分方案数.(n <= 100008) Solution : 参考资料: 五角数 欧拉函数 五边形数定理 整数划分 一份详细的题 ...

  8. HDU 4651 数论 partition 求自然数的拆分数

    别人的解题报告: http://blog.csdn.net/zstu_zlj/article/details/9796087 我的代码: #include <cstdio> #define ...

  9. hdu 4602 Partition

    http://acm.hdu.edu.cn/showproblem.php?pid=4602 输入 n 和 k 首先 f(n)中k的个数 等于 f(n-1) 中 k-1的个数 最终等于 f(n-k+1 ...

随机推荐

  1. windows10 离线包安装net3.5

    找到离线镜像: 管理员命令行运行:dism.exe /online /enable-feature /featurename:netfx3 /Source:E:\sources\sxs 路径根据实际情 ...

  2. MySQL中多表删除方法(转载)

    如果您是才接触MySQL数据库的新人,那么MySQL中多表删除是您一定需要掌握的,下面就将为详细介绍MySQL中多表删除的方法,供您参考,希望对你学习掌握MySQL中多表删除能有所帮助. 1.从MyS ...

  3. hdu 5312 Sequence(数学推导+线性探查(两数相加版))

    Problem Description Today, Soda has learned a sequence whose n-th (n≥) item )+. Now he wants to know ...

  4. pyqt 动态显示时间方法例子学习

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import sys,datetime from PyQt4.QtC ...

  5. 计划任务中使用NT AUTHORITY\SYSTEM用户和普通管理员用户有什么差别

    原文地址:http://www.ynufe.edu.cn/metc/Article/ShowArticle.asp?ArticleID=805 系统管理员会碰到这种问题,为什么在更改系统登录用户pas ...

  6. Android应用程序注冊广播接收器(registerReceiver)的过程分析

    前面我们介绍了Android系统的广播机制,从本质来说,它是一种消息订阅/公布机制,因此,使用这样的消息驱动模型的第一步便是订阅消息:而对Android应用程序来说,订阅消息事实上就是注冊广播接收器, ...

  7. jQuery数组处理函数

    写在前面: jQuery的数组处理函数整理如下,如有补充和建议,欢迎评论交流~   1.$.trim(value)  从value中删除任何前导或尾随的空白字符   2.$.each(containe ...

  8. jQuery 双击事件(dblclick)时,不触发单击事件(click)

    我这是转载的文字 原文地址:http://www.cnblogs.com/wyblog/archive/2011/12/15/2289219.html 万恶的双击事件啊!! 在jQuery的事件绑定中 ...

  9. C# 获取配置文件节点值

    <?xml version="1.0" encoding="utf-8" ?><configuration>  <appSetti ...

  10. ScrollView 的使用(非原创)

    1.ScrollView滚动视图是指当拥有很多内容,屏幕显示不完时,需要通过滚动跳转来显示的视图.ScrollView只支持垂直滚动 <ScrollView xmlns:android=&quo ...