前言:
21考研,正在啃《算法笔记》,不论能否进复试记录一下准备路上写下的垃圾代码。
解答:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct cur {
int val;
int count=0;
};
int main() {
int n;
while (cin >> n) {
string res = "";
cur m[5];
m[0].val = 50;
m[1].val = 20;
m[2].val = 10;
m[3].val = 5;
m[4].val = 1;
while (n != 0) {
if (n >= 50) { //足够大面额就先给大面额纸币
m[0].count++;
n -= 50;
}
else if (n >= 20) {
m[1].count++;
n -= 20;
}
else if (n >= 10) {
m[2].count++;
n -= 10;
}
else if (n >= 5) {
m[3].count++;
n -= 5;
}
else if (n >= 1) {
m[4].count++;
n -= 1;
}
}
for (int i = 0; i < 5; i++)
if (m[i].count != 0)
res = res + "+" + to_string(m[i].val) + "*" + to_string(m[i].count);
res.erase(0, 1); //删除第一个加号
cout << res << endl;
}
return 0;
}