結果

問題 No.528 10^9と10^9+7と回文
ユーザー maimai
提出日時 2017-06-09 23:48:03
言語 Ruby
(3.3.0)
結果
WA  
実行時間 -
コード長 955 bytes
コンパイル時間 341 ms
コンパイル使用メモリ 7,552 KB
実行使用メモリ 19,236 KB
最終ジャッジ日時 2024-09-22 20:07:33
合計ジャッジ時間 4,166 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 87 ms
19,228 KB
testcase_01 AC 90 ms
12,288 KB
testcase_02 AC 86 ms
12,288 KB
testcase_03 AC 88 ms
12,288 KB
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 TLE -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
testcase_27 -- -
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

def ascan; gets.split.map(&:to_i); end
def scan; gets.to_i; end

@md = 1
# 1以上10^i-1以下の整数
def _kaibunsu_dec(keta)
    return 9 if (keta <= 1)
    r = 1
    ((keta + 1) / 2).times{r*=10}
    return r - (r / 10) + _kaibunsu_dec(keta-1)
end

# dfs列挙
def _kaibunsu_dfs(low, high, kcl, kch, num=0)
    return low <= num && num <= high ? 1 : 0 if kcl > kch
    result = 0
    (kcl == 1 ? 1 : 0).upto(9){|k|
        result = (result + _kaibunsu_dfs(low, high, kcl * 10, kch / 10, num + kcl*k + kch*k*(kcl != kch ? 1 : 0)))%@md
    }
    return result
end

# 1以上val以下の整数で回文数が何個あるか
def kaibunsu(val)
    return val if (val <= 9)
    dec = 1
    keta = 0
    while (val >= dec)
        dec *= 10; ++keta;
    end
    dec /= 10;
    
    return _kaibunsu_dfs(dec, val, 1, dec) + _kaibunsu_dec(keta - 1);
end

# (´・ω・`)
n = gets.to_i
@md = 10000000007
p kaibunsu(n)%@md
@md = 10000000000
p kaibunsu(n)%@md

0