結果
問題 | No.2385 Parse Integer with Radix |
ユーザー |
|
提出日時 | 2023-09-08 09:08:31 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,744 bytes |
コンパイル時間 | 4,507 ms |
コンパイル使用メモリ | 273,796 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-26 02:13:08 |
合計ジャッジ時間 | 4,594 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 11 |
ソースコード
//Normal-2#define _GLIBCXX_DEBUG#define ll long long#include <bits/stdc++.h>using namespace std;using Graph = vector<vector<int>>;void p(auto a){cout << a;}void ps(auto a){cout << a << " ";}void ps(){cout << " ";}void pl(auto a){cout << a << endl;}void pl(){cout << endl;}void fix15(){cout << fixed << setprecision(15);}void YES(){pl("YES");}void NO(){pl("NO");}void Yes(){pl("Yes");}void No(){pl("No");}void yes(){pl("yes");}void no(){pl("no");}//Normal-2int main(){int Q; cin >> Q;for(int i = 0; i < Q; i++){string S; cin >> S;int s = (int)S.size();if(S == "0b0" or S == "0o0" or S == "0" or S == "0x0") pl(0);else{if(s == 1) pl(S);else{string S2 = S.substr(0, 2), S3 = S.substr(2, s);if(S2 == "0b"){reverse(S3.begin(), S3.end());ll ans = 0;for(ll i = 0; i < (int)S3.size(); i++){ll bas = pow(2, i);ans += bas * (int)(S3[i]-'0');}pl(ans);}else if(S2 == "0o"){reverse(S3.begin(), S3.end());ll ans = 0;for(ll i = 0; i < (int)S3.size(); i++){ll bas = pow(8, i);ans += bas * (int)(S3[i]-'0');}pl(ans);}else if(S2 == "0x"){reverse(S3.begin(), S3.end());ll ans = 0;for(ll i = 0; i < (int)S3.size(); i++){ll bas = pow(16, i);'a' <= S3[i] and S3[i] <= 'f' ?ans += bas * (int)(S3[i]-'a'+10) : ans += bas * (int)(S3[i]-'0');}pl(ans);}else pl(S);}}}}