Integer Partition

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 22    Accepted Submission(s): 15

Problem Description
Given n, k, calculate the number of different (unordered) partitions of n such that no part is repeated k or more times.
 
Input
First line, number of test cases, T.
Following are T lines. Each line contains two numbers, n and k.

1<=n,k,T<=105

 
Output
T lines, each line contains answer to the responding test case.
Since the numbers can be very large, you should output them modulo 109+7.
 
Sample Input
4
4 2
4 3
4 4
4 5
 
Sample Output
2
4
4
5
 
Source
 
Recommend
zhuyuanchen520
 
 
 
跟上次多校求数的划分很类似。
 
 
所谓的五边形数定理还没有搞懂。
 
 
先贴个代码先,胡搞弄过去的
 
 
 /*
* Author: kuangbin
* Created Time: 2013/8/8 11:53:35
* File Name: 1004.cpp
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <time.h>
using namespace std;
const int MOD = 1e9+;
int dp[];
void init()
{
memset(dp,,sizeof(dp));
dp[] = ;
for(int i = ;i <= ;i++)
{
for(int j = , r = ; i - ( * j * j - j) / >= ; j++, r *= -)
{
dp[i] += dp[i -( * j * j - j) / ] * r;
dp[i] %= MOD;
dp[i] = (dp[i]+MOD)%MOD;
if( i - ( * j * j + j) / >= )
{
dp[i] += dp[i - ( * j * j + j) / ] * r;
dp[i] %= MOD;
dp[i] = (dp[i]+MOD)%MOD;
} } }
} int solve(int n,int k)
{
int ans = dp[n];
for(int j = , r = -; n - k*( * j * j - j) / >= ; j++, r *= -)
{
ans += dp[n -k*( * j * j - j) / ] * r;
ans %= MOD;
ans = (ans+MOD)%MOD;
if( n - k*( * j * j + j) / >= )
{
ans += dp[n - k*( * j * j + j) / ] * r;
ans %= MOD;
ans = (ans+MOD)%MOD;
} }
return ans;
} int main()
{
init();
int T;
int n,k;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
printf("%d\n",solve(n,k));
}
return ;
}
 
 
 
 
 
 

HDU 4658 Integer Partition (2013多校6 1004题)的更多相关文章

  1. HDU 4699 Editor (2013多校10,1004题)

    Editor Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Su ...

  2. HDU 4679 Terrorist’s destroy (2013多校8 1004题 树形DP)

    Terrorist’s destroy Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Othe ...

  3. HDU 4669 Mutiples on a circle (2013多校7 1004题)

    Mutiples on a circle Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Oth ...

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

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

  5. HDU 4678 Mine (2013多校8 1003题 博弈)

    Mine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submis ...

  6. HDU 4681 String(2013多校8 1006题 DP)

    String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Subm ...

  7. HDU 4666 Hyperspace (2013多校7 1001题 最远曼哈顿距离)

    Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  8. HDU 4705 Y (2013多校10,1010题,简单树形DP)

    Y Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submiss ...

  9. HDU 4704 Sum (2013多校10,1009题)

    Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submi ...

随机推荐

  1. linux驱动基础系列--Linux 串口、usb转串口驱动分析

    前言 主要是想对Linux 串口.usb转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动.平台驱动等也不进行详细说明原理.如果有任何错误地方,请指出, ...

  2. 写微信API所遇到的问题

    1.接口还没出来之前. 根据微信网页版的页面,自己做了页面,分成了两个页面,一个是登录之后的,一个是登录之前的.后来接口出来之后我师兄说要做成只有一个页面时,我就有点吓到了,想想都觉得难,后来用了JQ ...

  3. JVM 类加载过程、初始化、主动引用、被动引用、静态初始化块执行顺序

  4. ReentrantLock 学习

    Java接口Lock有三个实现类:ReentrantLock.ReentrantReadWriteLock.ReadLock和ReentrantReadWriteLock.WriteLock.Lock ...

  5. Ta-Lib用法介绍 !

    一.函数索引 重叠研究 BBANDS Bollinger Bands DEMA Double Exponential Moving Average EMA Exponential Moving Ave ...

  6. 论文笔记 《Maxout Networks》 && 《Network In Network》

    论文笔记 <Maxout Networks> && <Network In Network> 发表于 2014-09-22   |   1条评论 出处 maxo ...

  7. Bootstrap Div 居中的方法

    有两个DIV,DIV2被包含在DIV1中.格式如下: <div id="div1"> <div id="div2">         & ...

  8. Android与html5交互 -- WebView使用(一)

    Android中使用WebView可加载html5,具体步骤如下: (前提:本地Html5存放到assets文件夹下) 一:使用WebView加载Html5,简单显示 1:清单文件中添加访问权限:an ...

  9. Team Service 编译项目并生成项目

    第一步:生成GitHub帐号连接 在Service中选择Github 在弹出的GitHub连接中点击授权,即会弹出另一个窗口,输入Github的用户名及口令,即可授权. 第二步:创建Build定义 解 ...

  10. python笔记四:面向对象

    1.类 class Student(object): def __init__(self, name, score): self.name = name self.score = score 1)__ ...