結果
問題 | No.518 ローマ数字の和 |
ユーザー |
![]() |
提出日時 | 2017-06-02 12:09:58 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 25 ms / 2,000 ms |
コード長 | 4,874 bytes |
コンパイル時間 | 793 ms |
コンパイル使用メモリ | 112,636 KB |
実行使用メモリ | 17,920 KB |
最終ジャッジ日時 | 2024-09-21 22:08:38 |
合計ジャッジ時間 | 1,972 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;namespace No._518{class Program{static void Main(string[] args){int N = int.Parse(Console.ReadLine());string[] roma = Console.ReadLine().Split();Program program = new Program();int sum = 0;for (int i = 0; i < N; i++){sum += program.CharToNum(roma[i].ToCharArray());}string ans = program.NumToChar(sum);Console.WriteLine(ans);}public int CharToNum(char[] roma){int result = 0;Array.Reverse(roma);for (int i = 0; i < roma.Length; i++){switch (roma[i]){case 'M':result += 1000;break;case 'D':result += 500;break;case 'C':if (i != 0){if (roma[i - 1] == 'M' || roma[i - 1] == 'D'){result -= 100;break;}}result += 100;break;case 'L':result += 50;break;case 'X':if (i != 0){if (roma[i - 1] == 'L' || roma[i - 1] == 'C'){result -= 10;break;}}result += 10;break;case 'V':result += 5;break;case 'I':if (i != 0){if (roma[i - 1] == 'V' || roma[i - 1] == 'X'){result -= 1;break;}}result += 1;break;}}return result;}public string NumToChar(int number){if (number > 3999){return "ERROR";}string result = "";if (number >= 1000){int n = number / 1000;number %= 1000;while (n > 0){result += "M";n--;}}if (number >= 100){int n = number / 100;number %= 100;if (n == 9){result += "CM";n -= 9;}else if (8 >= n && n >= 5){result += "D";n -= 5;}else if (n == 4){result += "CD";n -= 4;}while (n > 0){result += "C";n--;}}if (number >= 10){int n = number / 10;number %= 10;if (n == 9){result += "XC";n -= 9;}else if (8 >= n && n >= 5){result += "L";n -= 5;}else if (n == 4){result += "XL";n -= 4;}while (n > 0){result += "X";n--;}}if (number >= 1){if (number == 9){result += "IX";number -= 9;}else if (8 >= number && number >= 5){result += "V";number -= 5;}else if (number == 4){result += "IV";number -= 4;}while (number > 0){result += "I";number--;}}return result;}}}