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;
}
上一篇:微信小程序——自定义图标组件


下一篇:小程序丨页面跳转的四种方法