/*
小李是超市的收银员,每当顾客来结账时,他们给的钱往往都多余他们所购物品的实际价格,这时,小李就需要找零给他们。
小李是一个很爱思考的人,他想知道在目前的纸币面额情况下(1角、5角、1元、5元、10元、20元、50元、100元),如果每
种面额的纸币的数量都是无限的,他要给一个顾客找零N(0<N<100)元有多少种方式(如0.5元有两种方式:5个1角和1个5角)。
小李很苦恼这个问题,聪明的你能帮助他吗?
Input
输入包括多组测试用例,通过EOF结束。
每组测试用例包括一行,为一个数N(1<N<100),N为最多包含一位小数的实数。
Output
对于每组测试用例,输出一行,为一个整数,表示找零的方法总数。
Sample Input
Copy sample input to clipboard
0.5
1
Sample Output
2
4
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
const int coin[]={0,1000,500,200,100,50,10,5,1};
int need[1000];
double n;
memset(need,0,sizeof(need));
need[0]=1;
for(int i=1;i<=8;++i)
{
for(int j=coin[i];j<=1000;++j)
{
need[j]+=need[j-coin[i]];
}
}
while(scanf("%lf",&n)!=EOF)
{
int a=n*10;
printf("%d\n",need[a]);
}
return 0;
}