2446 - A:自动贩卖机

宿舍楼下有自动贩卖机后,教学楼下也有了。某台自动贩卖机只有以下3种饮料可以买:
1.脉动,4元。
2.旺仔牛奶,3元。
3.矿泉水,1元。
并且这台自动贩卖机很高级,只会找10元,5元,1元这3种纸币,不会找硬币,而且有无数张。那么在顾客一定能购买成功的情况下,它要怎样找零钱,才会使自己找出的纸币张数最少呢。

题目输入

输入数据的第一行是一个整数T,表示有T组测试样例,接着是T行数据,每行两个整数n和m,n表示顾客投入贩卖机的金额,m表示顾客要买饮料的序号。T<100,0<n<=100,0<m<=3。

题目输出

对于每组测试样例,输出该自动贩卖机要找出零钱的最少张数,并独占一行。

输入/输出样例

题目输入

3
10 2
5 3
85 2

题目输出

3
4
10

C语言解答

#include<stdio.h>
void main()
{
	int n,i,money,num,x,ten,five,one;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d%d",&money,&num);
		if(num==1)
			x=money-4;
		if(num==2)
			x=money-3;
		if(num==3)
			x=money-1;
		ten=x/10;
		five=x%10;
		if(five>=5) {five=1;one=x%10-5;}
		else {five=0;one=x%10;}
		printf("%d\n",ten+five+one);
	}
}

C++解答

#include<stdio.h>
int main()
{
	int f[]={0,4,3,1};
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int n,m;
		scanf("%d%d",&n,&m);
		n-=f[m];
		int count=0;
		count+=n/10;
		count+=n%10/5;
		count+=n%10%5;
		printf("%d\n",count);
	}
}
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题