結果
問題 | No.1086 桁和の桁和2 |
ユーザー | tyawanmusi |
提出日時 | 2020-01-20 19:39:26 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 2,369 ms / 3,000 ms |
コード長 | 896 bytes |
コンパイル時間 | 294 ms |
コンパイル使用メモリ | 12,544 KB |
実行使用メモリ | 26,476 KB |
最終ジャッジ日時 | 2024-07-22 17:37:36 |
合計ジャッジ時間 | 40,609 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 31 |
ソースコード
mod = 10**9 + 7 n = int(input()) l = list(map(int, input().split())) r = list(map(int, input().split())) d = list(map(int, input().split())) def calc(l, r, di, dj): #(10^l <= a < 10^r or a=0) and f(di+f(a))=djを満たすaの数 if dj == 0: if di == 0: #di==dj==0のとき、a=0の1通りのみ return 1 else: #di!=dj==0のとき、条件を満たすaは存在しない return 0 else: #aの総数は(10^r - 10^l)/9で一般化される #di==djの時、a=0の1通りが加算される ans_r = pow(10, r, mod) * pow(9, mod - 2, mod)#逆元です ans_l = pow(10, l, mod) * pow(9, mod - 2, mod) ans=(ans_r + (mod - ans_l)) % mod if di == dj: ans += 1 ans %= mod#これ必要ですか? return ans ans = calc(l[0], r[0], 0, d[0]) for i in range(1, n): ans *= calc(l[i], r[i], d[i - 1], d[i]) ans %= mod print(ans)