CodeForces 996A Hit the Lottery (C)

题目
Allen has a LOT of money. He has n dollars in the bank. For security reasons, he wants to withdraw it in cash (we will not disclose the reasons here). The denominations for dollar bills are 1, 5, 10, 20, 100. What is the minimum number of bills Allen could receive after withdrawing his entire balance?
Input
The first and only line of input contains a single integer n(1≤n≤109).
Output
Output the minimum number of bills that Allen could receive.
Examples
Input
125
Output
3
Input
43
Output
5
Input
1000000000
Output
10000000
Note
In the first sample case, Allen can withdraw this with a 100 dollar bill, a 20 dollar bill, and a 5 dollar bill. There is no way for Allen to receive 125 dollars in one or two bills.
In the second sample case, Allen can withdraw two 20 dollar bills and three 1 dollar bills.
In the third sample case, Allen can withdraw 100000000 (ten million!) 100 dollar bills.

题意:有5种不同面值的纸币,求凑够n最少需要几张纸币
求最少就要优先使用面值大的纸币

//复杂版
#include <stdio.h>
int main()
{
	long long n,i=0;
	scanf("%ld",&n);
	while(n>0)
	{
		if(n>=100) 
		{
			n=n-100; 
			i++;
		}
	        else if(n>=20) 
		{
			n=n-20; 
			i++;
		}
    	        else if(n>=10) 
		{
			n=n-10; 
			i++;
		}
    	        else if(n>=5) 
		{
			n=n-5; 
			i++;
		}
    	        else if(n>=1) 
		{
			n=n-1; 
			i++;
		}
    }
    printf("%ld\n",i);
	return 0;
}
//简单版
#include <stdio.h>
int main()
{
	int n,ans=0,a[6]={100,20,10,5,1};
	scanf("%d",&n);
	for(int i=0;i<5&&n>0;i++)
	{
		ans+=n/a[i]; //最多可以使用多少张当前价值的纸币
		n=n%a[i]; //最大限度的利用当前价值纸币后还需要支付多少钱
	}
	printf("%d\n",ans);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值