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;
}


posted @ 2013-07-31 15:18  xlc2845  阅读(114)  评论(0编辑  收藏  举报