uva 147
一个简单的dp 面值是5的倍数 将面值都除5 因为输出问题wa ....
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; long long f[6020]; int coin[] = {1,2,4,10,20,40,100,200,400,1000,2000}; void dp(int n) { memset(f, 0, sizeof(f)); f[0] = 1; for(int i = 0; i < 11; i++) { for(int j = coin[i]; j <= n; j++) { f[j] += f[j-coin[i]]; } } } int main() { int a,b; dp(6010); while(scanf("%d.%d",&a,&b) == 2) { int n = a*100 + b; if(n == 0) break; double ff = n/100.0; printf("%6.2lf%17lld\n",ff,f[n/5]); } return 0; }