結果
問題 | No.518 ローマ数字の和 |
ユーザー | myanta |
提出日時 | 2017-05-28 22:30:19 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 1 ms / 2,000 ms |
コード長 | 959 bytes |
コンパイル時間 | 185 ms |
コンパイル使用メモリ | 35,840 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-21 15:37:34 |
合計ジャッジ時間 | 847 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:42:30: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 42 | scanf("%s", buf); | ~~~~~^~~~~~~~~~~
ソースコード
#include<cstdio> #include<cstring> #include<vector> using namespace std; struct unit_t { char s[2+1]; int x; }; int main(void) { unit_t u[]={ {"M", 1000}, {"CM", 900}, {"D", 500}, {"CD", 400}, {"C", 100}, {"XC", 90}, {"L", 50}, {"XL", 40}, {"X", 10}, {"IX", 9}, {"V", 5}, {"IV", 4}, {"I", 1} }; int n, i, j, k, l, sum; char buf[100]; while(scanf("%d", &n)==1) { sum=0; for(i=0;i<n;i++) { scanf("%s", buf); l=strlen(buf); for(k=0;k<l;k++) { for(j=0;j<13;j++) { if(buf[k]==u[j].s[0]) { if(u[j].s[1]=='\0') { sum+=u[j].x; break; } if(buf[k+1]==u[j].s[1]) { k++; sum+=u[j].x; break; } } } } } if(sum>=4000) { printf("ERROR\n"); continue; } for(i=0;i<13;i++) { for(;sum>=u[i].x;sum-=u[i].x) { printf("%s", u[i].s); } } printf("\n"); } return 0; }