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); } }