HDU 4651 数论 partition 求自然数的拆分数
别人的解题报告:
http://blog.csdn.net/zstu_zlj/article/details/9796087
我的代码:
#include <cstdio>
#define N 100020
const int mod = 1e9+;
int p[N];
void Partition()
{
p[] =;
for(int n=; n <= 1e5; ++n)
{
int fac = ;
int k =;
while(true)
{
int t=n-k*(*k-)/;
if(t < ) break;
p[n] = (p[n]+fac*p[t])%mod;
if(t-k >= )
p[n] = (p[n]+fac*p[t-k])%mod;
p[n] %= mod;
fac = -fac;
++k;
}
p[n] = (p[n]+mod)%mod;
}
}
int main()
{
// freopen("in.cpp","r",stdin);
Partition();
int d;
scanf("%d",&d);
while(d--)
{
int c;
scanf("%d",&c);
printf("%d\n",p[c]);
}
return ;
}
认真考虑二维的情况;n<10^3才可行,而且该代码没有取模操作······
我的代码:
#include <cstdio>
#include <cstring>
#define N 2005
//#define debug
int d[N][N];
void init()
{
for(int i=; i<N; ++i)
d[][i] = d[][i]=d[i][]=d[i][] =;
for(int i=; i<N; ++i)
{
for(int j=; j<N; ++j)
{
if(i-j >= ) d[i][j] += d[i-j][j];
d[i][j] += d[i][j-];
}
}
}
int main()
{
#ifdef debug
freopen("in.c","r",stdin);
#endif
init();
int t;
scanf("%d",&t);
while(t--)
{
int m;
scanf("%d",&m);
printf("%d\n",d[m][m]);
} return ;
}
要查看关于二维的解释可点击下面的链接:
http://www.cnblogs.com/allh123/p/3246828.html
HDU 4651 数论 partition 求自然数的拆分数的更多相关文章
- hdu 3641 数论 二分求符合条件的最小值数学杂题
http://acm.hdu.edu.cn/showproblem.php?pid=3641 学到: 1.二分求符合条件的最小值 /*================================= ...
- hdu 4651 Partition (利用五边形定理求解切割数)
下面内容摘自维基百科: 五边形数定理[编辑] 五边形数定理是一个由欧拉发现的数学定理,描写叙述欧拉函数展开式的特性[1] [2].欧拉函数的展开式例如以下: 亦即 欧拉函数展开后,有些次方项被消去,仅 ...
- HDU 4651 (生成函数)
HDU 4651 Partition Problem : n的整数划分方案数.(n <= 100008) Solution : 参考资料: 五角数 欧拉函数 五边形数定理 整数划分 一份详细的题 ...
- GCD and LCM HDU 4497 数论
GCD and LCM HDU 4497 数论 题意 给你三个数x,y,z的最大公约数G和最小公倍数L,问你三个数字一共有几种可能.注意123和321算两种情况. 解题思路 L代表LCM,G代表GCD ...
- [E. Ehab's REAL Number Theory Problem](https://codeforces.com/contest/1325/problem/E) 数论+图论 求最小环
E. Ehab's REAL Number Theory Problem 数论+图论 求最小环 题目大意: 给你一个n大小的数列,数列里的每一个元素满足以下要求: 数据范围是:\(1<=a_i& ...
- HDU 4651 Partition(整数拆分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:给出n.求其整数拆分的方案数. i64 f[N]; void init(){ f[0 ...
- hdu - 4651 - Partition
题意:把一个整数N(1 <= N <= 100000)拆分不超过N的正整数相加,有多少种拆法. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid ...
- hdu 4651 Partition && hdu 4658 Integer Partition——拆分数与五边形定理
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4651 参考:https://blog.csdn.net/u013007900/article/detail ...
- HDU 4651 Partition 整数划分,可重复情况
Partition Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
随机推荐
- JavaScript权威指南--事件处理
知识要点 客户端JavaScript程序采用了异步事件驱动变成模型(13.3.2节).这种风格并不只应用于web编程,所有使用图形用户界面的应用程序都采用它,它们静待某些事件发生,然后响应. 事件就是 ...
- 动态规划-Largest Sum of Averages
2018-07-12 23:21:53 问题描述: 问题求解: dp[i][j] : 以ai结尾的分j个部分得到的最大值 dp[i][j] = max{dp[k][j - 1] + (ak+1 + . ...
- .net常见框架
从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继 ...
- 2017-03-03 Oracle在.Net中出现未在本地计算机上注册“OraOLEDB.Oracle”提供程序的错误
在前面的Oracle配置完成后,打开项目运行出错,出现未在本地计算机上注册“OraOLEDB.Oracle”提供程序的错误,看到“注册”两个字,首先想到,难道还要用命令行注册一下?果不其然,需要手动注 ...
- English trip -- Review Unit 10 Leisure 休闲
Words dance exercise fish play basketball play cards swim cook play the guitar listen to music watch ...
- boruvka算法
算法正确性证明: 1.最优性:最小边一定包含在生成树中. 2.合法性:一定不会构成环.如果存在环说明一个点的最小连边有两个,显然矛盾. 算法时间复杂度证明: 每执行一次算法,所有联通块的大小都至少为2 ...
- 『TensorFlow』项目资源分享
TF中文社区 TF_GOOGLE官方代码学习 1.TensorFlow-Slim TF-Slim 是 tensorflow 较新版本的扩充包,可以简化繁杂的网络定义,其中也提供了一些demo: Ale ...
- 信号的发送kill,raise,alarm,setitimer,abort,sigqueue
1.kill函数 int kill(pid_t pid, int sig); 发送信号给指定的进程. (1) If pid is positive, then signal sig is sent t ...
- Win10取消密码
- learning uboot how to enable watchdog in qca4531 cpu
find cpu datasheet , watchdog relate registers: 0x18060008 watchdong timer control 0x1806000c watchd ...