結果

問題 No.2385 Parse Integer with Radix
ユーザー InTheBloomInTheBloom
提出日時 2023-07-21 21:30:26
言語 D
(dmd 2.106.1)
結果
AC  
実行時間 1 ms / 2,000 ms
コード長 902 bytes
コンパイル時間 3,163 ms
コンパイル使用メモリ 161,280 KB
実行使用メモリ 4,348 KB
最終ジャッジ日時 2023-10-21 21:20:37
合計ジャッジ時間 3,985 ms
ジャッジサーバーID
(参考情報)
judge9 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
4,348 KB
testcase_01 AC 1 ms
4,348 KB
testcase_02 AC 1 ms
4,348 KB
testcase_03 AC 1 ms
4,348 KB
testcase_04 AC 1 ms
4,348 KB
testcase_05 AC 1 ms
4,348 KB
testcase_06 AC 1 ms
4,348 KB
testcase_07 AC 1 ms
4,348 KB
testcase_08 AC 1 ms
4,348 KB
testcase_09 AC 1 ms
4,348 KB
testcase_10 AC 1 ms
4,348 KB
testcase_11 AC 1 ms
4,348 KB
権限があれば一括ダウンロードができます

ソースコード

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