結果
| 問題 |
No.2385 Parse Integer with Radix
|
| コンテスト | |
| ユーザー |
Today03
|
| 提出日時 | 2023-07-21 21:27:26 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 3 ms / 2,000 ms |
| コード長 | 920 bytes |
| コンパイル時間 | 2,151 ms |
| コンパイル使用メモリ | 195,632 KB |
| 最終ジャッジ日時 | 2025-02-15 16:18:42 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 11 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
long long change(string s, int b) {
long long ret=0;
int n=s.size();
reverse(s.begin(),s.end());
long long base=1;
for (int i=0;i<n;i++) {
ret+=base*(s[i]-'0');
base*=b;
}
return ret;
}
long long change16(string s) {
long long ret=0;
int n=s.size();
reverse(s.begin(),s.end());
long long base=1;
for (int i=0;i<n;i++) {
ret+=base*('0'<=s[i]&&s[i]<='9'?(s[i]-'0'):(10+(s[i]-'a')));
base*=16;
}
return ret;
}
int main() {
int q;
cin>>q;
while (q--) {
string s;
cin>>s;
if (s.size()==1) {
cout<<s<<'\n';
}
else if (s[1]=='b') {
s=s.substr(2);
cout<<change(s,2)<<'\n';
}
else if (s[1]=='o') {
s=s.substr(2);
cout<<change(s,8)<<'\n';
}
else if (s[1]=='x') {
s=s.substr(2);
cout<<change16(s)<<'\n';
}
else {
cout<<s<<'\n';
}
}
}
Today03