// @BEGIN_OF_SOURCE_CODE /* @JUDGE_ID: 17243NT 147 C++ "Rounding problems suck" */ // Send to judge@uva.es #include #include #include #ifdef ONLINE_JUDGE #define ins cin #define outs cout #else #define ins fin #define outs fout ifstream fin("myprog.in"); ofstream fout("myprog.out"); #endif const int MAX = 5000; const int MAXUNIT = 11; unsigned int am[MAX + 1]; int units[MAXUNIT] = {5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000}; int main() { double amount; int i, j; am[0] = 1; for(i = 1; i <= MAX + 1; i++) am[i] = 0; for(i = 0; i < MAXUNIT; i++) { for(j = 0; j <= MAX - units[i]; j++) { am[j + units[i]] += am[j]; } } while(ins >> amount) { if(amount == 0) break; outs << setiosflags(ios::fixed) << setw(5) << setprecision(2) << amount << setw(12) << am[(int) (amount * 100 + .1)] << endl; } return 0; } // @END_OF_SOURCE_CODE