結果
| 問題 |
No.2385 Parse Integer with Radix
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-07-21 21:30:26 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 902 bytes |
| コンパイル時間 | 4,038 ms |
| コンパイル使用メモリ | 170,112 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-09-21 22:48:03 |
| 合計ジャッジ時間 | 5,069 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 11 |
ソースコード
import std;
void main () {
int Q = readln.chomp.to!int;
foreach (_; 0..Q) {
string S = readln.chomp;
if (S.length < 2) {
solve(S, 10);
continue;
}
int radix;
switch (S[0..2]) {
case "0b":
S = S[2..$]; radix = 2;
break;
case "0o":
S = S[2..$]; radix = 8;
break;
case "0x":
S = S[2..$]; radix = 16;
break;
default:
radix = 10;
break;
}
solve(S, radix);
}
}
auto solve (string S, int radix) {
long res = 0;
long base = 1;
foreach_reverse (c; S) {
if ('a' <= c) {
res += base*(c-'a'+10);
} else {
res += base*(c-'0');
}
base *= radix;
}
writeln(res);
}