結果
| 問題 | No.1417 100の倍数かつ正整数(2) | 
| コンテスト | |
| ユーザー |  c-yan | 
| 提出日時 | 2021-03-21 08:51:46 | 
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 763 ms / 3,000 ms | 
| コード長 | 958 bytes | 
| コンパイル時間 | 176 ms | 
| コンパイル使用メモリ | 12,672 KB | 
| 実行使用メモリ | 10,880 KB | 
| 最終ジャッジ日時 | 2024-11-21 23:32:13 | 
| 合計ジャッジ時間 | 6,281 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 36 | 
ソースコード
m = 1000000007
N = input()
t = [100, 50, 25, 20, 10, 5, 4, 2, 1]
mapping = {}
for x in t:
    mapping.setdefault(x, [-1] * 10)
    for y in range(1, 10):
        v = x * y
        for z in t:
            if v % z != 0:
                continue
            mapping[x][y] = z
            break
a, b = {1: 1}, {}
for c in N:
    na = {}
    nb = {1: 1}
    x = int(c)
    # a to a
    if x != 0:
        for k in a:
            z = mapping[k][x]
            na.setdefault(z, 0)
            na[z] += a[k]
            na[z] %= m
    # a to b
    for y in range(1, x):
        for k in a:
            z = mapping[k][y]
            nb.setdefault(z, 0)
            nb[z] += a[k]
            nb[z] %= m
    # b to b
    for y in range(1, 10):
        for k in b:
            z = mapping[k][y]
            nb.setdefault(z, 0)
            nb[z] += b[k]
            nb[z] %= m
    a, b = na, nb
a.setdefault(100, 0)
b.setdefault(100, 0)
print((a[100] + b[100]) % m)
            
            
            
        