简单dp问题。
#include <iostream>
#include <limits>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cstring>
using namespace std;
const int size = 30000 + 100;
const double eps = 1e-6;
int c[] = {5 , 10 , 20 , 50 , 100 , 200 , 500 , 1000 , 2000 , 5000 , 10000};
long long d[size];
int main()
{
double v;
for(int i = 0 ; i < size ; ++i)
if(i%5)d[i] = 0;
else d[i] = 1;
for(int i = 1 ; i < sizeof(c) / sizeof(c[0]) ; ++i)
{
for(int j = 0 ; j < size ; ++j) if(j >= c[i])
{
d[j] += d[j-c[i]];
}
}
while(scanf("%lf" , &v) && v >= eps)
{
int t = (int)(v*100 + 0.5);
printf("%6.2f%17lld\n" , v , d[t]);
}
return 0;
}