結果
問題 | No.518 ローマ数字の和 |
ユーザー |
|
提出日時 | 2019-08-25 16:57:15 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,343 bytes |
コンパイル時間 | 1,030 ms |
コンパイル使用メモリ | 103,416 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-15 19:11:16 |
合計ジャッジ時間 | 1,984 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
#include <limits>#include <iostream>#include <algorithm>#include <iomanip>#include <map>#include <set>#include <queue>#include <stack>#include <numeric>#include <bitset>#include <cmath>static const int MOD = 1000000007;using ll = long long;using u32 = uint32_t;using namespace std;template<class T> constexpr T INF = ::numeric_limits<T>::max()/32*15+208;int main() {vector<string> A{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},B{"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},C{"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},D{"", "M", "MM", "MMM"};int n;cin >> n;int x = 0;for (int i = 0; i < n; ++i) {string t;cin >> t;for (int j = 1; j <= 3999; ++j) {int jj = j;string s;s += A[jj%10];jj /= 10;s = B[jj%10] + s;jj /= 10;s = D[jj/10] + C[jj%10] + s;if(s == t){x += j;break;}}}if(x > 3999) puts("ERROR");else {string s;s += A[x%10];x /= 10;s = B[x%10] + s;x /= 10;s = D[x/10] + C[x%10] + s;cout << s << "\n";}return 0;}