結果

問題 No.518 ローマ数字の和
ユーザー aceroid
提出日時 2017-05-28 22:56:38
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 2,407 bytes
コンパイル時間 389 ms
コンパイル使用メモリ 56,036 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-09-21 15:44:02
合計ジャッジ時間 1,206 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 19
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include "iostream"
#include <string>
using namespace std;
void print(int x, char a);
int main()
{
char alavia[8] = "MDCLXVI";
string change;
int S = 0, sum = 0, Asum = 0, V5 = 0, X10 = 0, L50 = 0, C100 = 0, D500 = 0, M1000 = 0;
cin >> S;
for (int i = 0; i < S; i++) {
cin >> change;
int m = change.size();
for (int j = 0; j < m; j++) {
if (change[j] == 'I') {
if ((j + 1) < m) {
if (change[j + 1] == 'V') {
sum += 4;
j++;
}
else if (change[j + 1] == 'X') {
sum += 9;
j++;
}
else
sum += 1;
}
else
sum += 1;
}
else if (change[j] == 'V')
sum += 5;
else if (change[j] == 'X') {
if ((j + 1) < m) {
if (change[j + 1] == 'L') {
sum += 40;
j++;
}
else if (change[j + 1] == 'C') {
sum += 90;
j++;
}
else
sum += 10;
}
else
sum += 10;
}
else if (change[j] == 'L')
sum += 50;
else if (change[j] == 'C') {
if ((j + 1) < m) {
if (change[j + 1] == 'D') {
sum += 400;
j++;
}
else if (change[j + 1] == 'M') {
sum += 900;
j++;
}
else
sum += 100;
}
else
sum += 100;
}
else if (change[j] == 'D')
sum += 500;
else
sum += 1000;
}
Asum += sum;
sum = 0;
}
if (Asum > 3999) {
cout << "ERROR";
}
else {
if (Asum > 999) {
M1000 = Asum / 1000;
print(M1000, alavia[0]);
Asum = Asum % 1000;
}
if (Asum > 899) {
cout << "CM";
Asum -= 900;
}
if(Asum > 499) {
D500 = Asum / 500;
print(D500, alavia[1]);
Asum = Asum % 500;
}
if (Asum > 399) {
cout << "CD";
Asum -= 400;
}
if (Asum > 99) {
C100 = Asum / 100;
print(C100, alavia[2]);
Asum = Asum % 100;
}
if (Asum > 89) {
cout << "XC";
Asum -= 90;
}
if (Asum > 49) {
L50 = Asum / 50;
print(L50, alavia[3]);
Asum = Asum % 50;
}
if (Asum > 39) {
cout << "XL";
Asum -= 40;
}
if (Asum > 9) {
X10 = Asum / 10;
print(X10, alavia[4]);
Asum = Asum % 10;
}
if (Asum > 8) {
cout << "IX";
Asum -= 9;
}
if (Asum > 4) {
V5 = Asum / 5;
print(V5, alavia[5]);
Asum = Asum % 5;
}
if (Asum > 3) {
cout << "IV";
Asum -= 4;
}
if (Asum > 0) {
print(Asum, alavia[6]);
}
else {
}
}
return 0;
}
void print(int x, char a)
{
for (int i = 0; i < x; i++)
cout << a;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0