結果

問題 No.2385 Parse Integer with Radix
ユーザー InTheBloomInTheBloom
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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);
}
0