結果

問題 No.518 ローマ数字の和
ユーザー ooh_20
提出日時 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.

ソースコード

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

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;
}
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0