結果
| 問題 |
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';
}
}
}