找零方案




/*
 小李是超市的收银员,每当顾客来结账时,他们给的钱往往都多余他们所购物品的实际价格,这时,小李就需要找零给他们。
 小李是一个很爱思考的人,他想知道在目前的纸币面额情况下(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;  
} 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值