結果
問題 | No.518 ローマ数字の和 |
ユーザー |
|
提出日時 | 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 |
ソースコード
#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++;}elsesum += 1;}elsesum += 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++;}elsesum += 10;}elsesum += 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++;}elsesum += 100;}elsesum += 100;}else if (change[j] == 'D')sum += 500;elsesum += 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;}