範例程式碼 uva147

//uva147
#include <iostream>
#include <iomanip>
#include <cstdio>

#define Max 30001

long long way[Max][11]={};

using namespace std;

int f(int c, int index) {
	int i;
	for(i = 0; i < c; i += 5)
		way[i][index] = way[i][index-1];
	for(i = c; i < Max; i += 5)
		way[i][index] = way[i-c][index] + way[i][index-1];
}

int main() {
	long long i, j;

	for(i = 0; i < Max; i+=5)
		way[i][0] = 1;
	
	f(10, 1);
	f(20, 2);
	f(50, 3);
	f(100, 4);
	f(200, 5);
	f(500, 6);
	f(1000, 7);
	f(2000, 8);
	f(5000, 9);
	f(10000, 10);

	int a, b;
	while(scanf("%d.%d\n", &a, &b) == 2 ) {
		if(a == 0 && b == 0)
			break;
		else {
			printf("%3d.", a);
			if(b < 10)
				cout << "0" << b;
			else
				cout << b;
			cout << setw(17) << way[a*100+b][10] << endl;
		}
	}
	return 0;
}