結果

問題 No.518 ローマ数字の和
ユーザー kotatsugame
提出日時 2019-10-12 14:54:41
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 1,054 bytes
コンパイル時間 598 ms
コンパイル使用メモリ 66,176 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-11-27 22:58:00
合計ジャッジ時間 1,446 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 19
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp:37:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   37 | main()
      | ^~~~

ソースコード

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

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