#include<cstdio>
#include<cstring>
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)>(y)?(y):(x))
long long dp1[1010];
long long dp2[1010];
long long MID;
int main()
{
int n,k;
long long ans;
scanf("%d%d",&n,&k);
memset(dp1,0,sizeof(dp1));
memset(dp2,0,sizeof(dp2));
MID=1;
for(int i=0;i<18;i++)
MID*=10;
dp1[0]=1;
for(int i=1;i<=k;i++)
{
for(int j=i;j<=n;j++)
{
dp1[j]+=dp1[j-i];
dp2[j]+=dp2[j-i];
dp2[j]+=dp1[j]/MID;
dp1[j]=dp1[j]%MID;
}
}
if(dp2[n])
printf("%lld",dp2[n]);
printf("%lld",dp1[n]);
}
poj 3181 求各种纸币组成某个特定值的方案数
最新推荐文章于 2019-10-27 22:38:46 发布