人民币的面值有100、50、20、10、5、2、1元。请你输出找零纸币数最少的方案
输入格式:
两个整数,分别表示付款金额和消费金额
输出格式:
输入找零方案。包含若干行,每行包含两个数字,纸币面额和纸币数量
输入样例:
10 3
结尾无空行
输出样例:
在这里给出相应的输出。例如:
5 1
2 1
结尾无空行
#include <bits/stdc++.h>
using namespace std;
void Change(int Pay,int Cost,int *M){
int rest;
int count[7]={0};
rest = Pay - Cost;
while(rest != 0){
for(int i = 0; i < 7; i++){
if(rest >= M[i]){
rest -= M[i];
count[i]++;
break;//注意这里,加上break退出循环再重新循环,防止较大面额的纸币漏算,如100 54这种情况
}
}
}
for(int i = 0; i < 7; i++){
if(count[i] > 0){
cout<<M[i]<<" "<<count[i]<<endl;
}
}
}
int main(){
int Pay,Cost;
int M[7] = {100,50,20,10,5,2,1};
cin>>Pay>>Cost;
Change(Pay,Cost,M);
}