题目链接:传送门
背包题
状态转移方程式 dp[i]=dp[i-coin[j]]+dp[i]%mod
其中coin[J]是1 2 5 10 20 50…i是总钱
代码如下:
#include <bits/stdc++.h>
using namespace std;
#define N 100100
#define mod 1000000007
#define inf 2000000000000000ll
int dp[N];
int main(){
int i,j,n,m;
cin>>n;
int coin[14]={1,2,5,10,20,50,100,200,500,1000,2000,5000,10000};
memset(dp,0,sizeof(dp));
dp[0]=1;
for(j=0;j<13;j++){
for(i=coin[j];i<=n;i++)
dp[i]=(dp[i-coin[j]]%mod+dp[i])%mod;
}
cout<<dp[n]<<endl;
return 0;
}