当前位置: 代码迷 >> 综合 >> 2018 蓝桥杯省赛 B 组模拟赛(五)J. 程序设计:划分整数
  详细解决方案

2018 蓝桥杯省赛 B 组模拟赛(五)J. 程序设计:划分整数

热度:58   发布时间:2023-11-20 06:11:08.0

蒜头君特别喜欢数学。今天,蒜头君突发奇想:如果想要把一个正整数 n 分解成不多于 k个正整数相加的形式,那么一共有多少种分解的方式呢?

蒜头君觉得这个问题实在是太难了,于是他想让你帮帮忙。

输入格式

共一行,包含两个整数 n(1n300) 和 k(1k300),含义如题意所示。

输出格式

一个数字,代表所求的方案数。

样例输入

5 3

样例输出

5                                                            

#include<iostream>
using namespace std;
long long dp[310][310];
int main()
{long long n,k;cin>>n>>k;for(int i=1;i<=n;i++){for(int j=1;j<=k;j++){if(i==1||j==1){dp[i][j]=1;}else if(i<j){dp[i][j]=dp[i][i];}else if(i>j){dp[i][j]=dp[i-j][j]+dp[i][j-1];}else{dp[i][j]=1+dp[i][j-1];}}}cout<<dp[n][k];
}
  相关解决方案