思路: 完全背包
分析: 裸题
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN = 8000;
int sum , dp[MAXN];
int v[6]={0,1,5,10,25,50};
void solve(){
memset(dp , 0 , sizeof(dp));
dp[0] = 1;
for(int i = 1 ; i <= 5 ; i++)
for(int j = v[i] ; j < MAXN ; j++)
dp[j] += dp[j-v[i]];
}
int main(){
solve();
while(scanf("%d", &sum) != EOF)
printf("%d\n" , dp[sum]);
return 0;
}