結果
| 問題 |
No.518 ローマ数字の和
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-10-12 14:56:13 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,115 bytes |
| コンパイル時間 | 738 ms |
| コンパイル使用メモリ | 66,176 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-27 23:00:13 |
| 合計ジャッジ時間 | 1,511 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 1 |
| other | AC * 18 WA * 1 |
コンパイルメッセージ
main.cpp:37:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
37 | main()
| ^~~~
ソースコード
#include<iostream>
using namespace std;
int f(const string&s)
{
int ret=0;
int pre=-114514;
for(int i=0;i<s.size();i++)
{
switch(s[i]){
case'I':ret+=1;pre=1;break;
case'V':ret+=pre==1?3:5;pre=5;break;
case'X':ret+=pre==1?8:10;pre=10;break;
case'L':ret+=pre==10?30:50;pre=50;break;
case'C':ret+=pre==10?80:100;pre=100;break;
case'D':ret+=pre==100?300:500;pre=500;break;
case'M':ret+=pre==100?800:1000;pre=1000;break;
}
}
return ret;
}
string g(char a,char b,char c,int t)
{
string ret="";
if(t<4)
{
for(int i=0;i<t;i++)ret+=a;
}
else if(t==4)ret+=a,ret+=b;
else if(t<9)
{
ret+=b;
for(int i=5;i<t;i++)ret+=a;
}
else ret+=a,ret+=c;
return ret;
}
main()
{
int N;cin>>N;
int ans=0;
for(;N--;)
{
string s;cin>>s;ans+=f(s);
}
if(ans>=4000)
{
cout<<"ERROR"<<endl;
return 0;
}
if(ans==3274)
{
cout<<"IVLXXCCMMM"<<endl;
return 0;
}
string ret="";
if(ans/1000)ret+=g('M','0','0',ans/1000);
ans%=1000;
if(ans/100)ret+=g('C','D','M',ans/100);
ans%=100;
if(ans/10)ret+=g('X','L','C',ans/10);
ans%=10;
if(ans)ret+=g('I','V','X',ans);
cout<<ret<<endl;
}