本文主要是介绍poj 3181 求各种纸币组成某个特定值的方案数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#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 求各种纸币组成某个特定值的方案数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!