結果
問題 | No.2385 Parse Integer with Radix |
ユーザー |
|
提出日時 | 2023-07-29 18:53:59 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,900 bytes |
コンパイル時間 | 3,872 ms |
コンパイル使用メモリ | 231,120 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-08 06:32:56 |
合計ジャッジ時間 | 4,461 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 11 |
ソースコード
#include <iostream>#include <bits/stdc++.h>#include <string>#include <algorithm>#include <cassert>#include <atcoder/all>#include <cctype>using namespace std;using namespace atcoder;#define rep(i, n) for (int i = 0; i < (int)(n); i++)#define rep_start(i,l,r) for(int i=(l);i<(r);i++)#define max(p,q)((p)>(q)?(p):(q))#define min(p,q)((p)<(q)?(p):(q))using ll = long long;using mod = modint998244353;using p = pair<int ,int>;//auto s0 = [](const vector<int> &alpha,const vector<int> &beta){return alpha[0] < beta[0];};//auto dfs = [&](auto &dfs,int i)->void{dfs(dfs,i)};int main(){int q;cin >> q;while(q--){string s;cin >> s;ll ans = 0;ll p = 1;if(s.size() <= 2){cout << s << '\n';}else if(s[0] == '0' && s[1] == 'b'){s = s.substr(2,s.size() - 2);reverse(s.begin(),s.end());for(char c:s){ans += p*(c - '0');p *= 2;}cout << ans << '\n';}else if(s[0] == '0' && s[1] == 'o'){s = s.substr(2,s.size() - 2);reverse(s.begin(),s.end());for(char c:s){ans += p*(c - '0');p *= 8;}cout << ans << '\n';}else if(s[0] == '0' && s[1] == 'x'){s = s.substr(2,s.size() - 2);reverse(s.begin(),s.end());for(char c:s){ll i = 0;if(c == 'a')i = 10;else if(c == 'b')i = 11;else if(c == 'c')i = 12;else if(c == 'd')i = 13;else if(c == 'e')i = 14;else if(c == 'f')i = 15;else i = c - '0';ans += p*i;p *= 16;}cout << ans << '\n';}else{cout << s << '\n';}}}