博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
整数划分
阅读量:4683 次
发布时间:2019-06-09

本文共 857 字,大约阅读时间需要 2 分钟。

将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2,3},共4种。由于数据较大,输出Mod 10^9 + 7的结果即可。

 

Input输入1个数N(1 <= N <= 50000)。Output输出划分的数量Mod 10^9 + 7。Sample Input

6

Sample Output

4
 每个数最多分成sqrt(n*2)个不一样的数,比如10分成1,2,3,4,其实就是(1 + 4) / 2 *4 = 10,max(j) = sqrt(n*2).把i分成j个数有两个来源途径1.i - j分成j个数,每个数+1,i - j分成j - 1个数+j.
code:
#include 
#include
#include
#define mod 1000000007using namespace std;long long dp[50010][320];int main(){ int n; cin>>n; dp[0][0] = 1; for(int i = 1;i <= n;i ++) { for(int j = 1;j <= sqrt(i * 2);j ++) { dp[i][j] = (dp[i - j][j - 1] + dp[i - j][j]) % mod; } } long long ans = 0; for(int i = 1;i <= sqrt(n * 2);i ++) { ans = (ans + dp[n][i]) % mod; } cout<

 

 

转载于:https://www.cnblogs.com/8023spz/p/8882963.html

你可能感兴趣的文章
7-2 树的同构 (25 分)
查看>>
学习node.js 第4篇 建立一个最小的web聊天系统
查看>>
SQL Server install SkipRules Cluster_VerifyForErrors or RebootRequiredCheck
查看>>
C# pdf打印 指定打印机
查看>>
poj 3468 A Simple Problem with Integers 线段树
查看>>
ASP.Net 验证视图状态 MAC 失败
查看>>
jQuery 在iframe中操作父页面某元素的方法
查看>>
微信小程序
查看>>
[题目] Luogu P3716 [CTSC2000]冰原探险
查看>>
linux下用phpize给PHP动态添加扩展
查看>>
php session 严格过期时间实现
查看>>
基于源码学习-fighting
查看>>
[转]LINUX新建和增加SWAP分区
查看>>
(上线时清缓存)laravel 5.1 的程序性能优化(配置文件) - 简书
查看>>
SettingsSVNPlugin
查看>>
华为经典问题汇总~
查看>>
linux桌面环境gnome,kde,xfce,lxde 使用比较(转)
查看>>
如何做自己不想做的事情,却必须要去做的事情
查看>>
JavaScript的深入理解(1)
查看>>
Go-TCP粘包
查看>>