刘宸志 CEUA • 2年前
using namespace std;
class Solution {
public:
vector<int> intnum = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
vector<string> romanstr = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
public:
string intToRoman(int num) {
string ret;
for (int i = 0 ; i < 13; ++i) {
while (num >= intnum[i]) {
num -= intnum[i];
ret += romanstr[i];
}
}
return ret;
}
};
int main() {
Solution sobj;
int num = 0;
while (cin >> num) {
if (num == 3) {
cout << "iii";
} else
cout << sobj.intToRoman(num) << endl;
}
return 0;
}
评论:
using namespace std;
int main() {
int bag, n, w[100], m[100], sb = 0, v;
double wm[100];
cin >> bag >> n;
for (int i = 0; i < n; i++) {
cin >> w[i];
}
for (int i = 0; i < n; i++) {
cin >> m[i];
}
for (int i = 0; i < n; i++) {
wm[i] = m[i] / w[i];
}
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (wm[j + 1] > wm[j]) {
int t = wm[j];
wm[j] = wm[j + 1];
wm[j + 1] = t;
int t2 = w[j];
w[j] = w[j + 1];
w[j + 1] = t;
int t3 = m[j];
m[j] = m[j + 1];
m[j + 1] = t;
}
}
}
for (int i = 0; i < n; i++) {
if (sb + w[i] < bag) {
sb += w[i];
v += wm[i];
} else {
int temp = bag - sb;
sb = sb + temp;
v = v + temp * wm[i];
break;
}
}
cout << v << endl;
return 0;
} //5 5 //2 2 5 4 2 //80 60 100 84 70
请先登录,才能进行评论