結果
問題 | No.1085 桁和の桁和 |
ユーザー |
![]() |
提出日時 | 2020-01-20 19:25:35 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 73 ms / 2,000 ms |
コード長 | 878 bytes |
コンパイル時間 | 253 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 11,008 KB |
最終ジャッジ日時 | 2024-11-06 17:31:13 |
合計ジャッジ時間 | 3,117 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 35 |
ソースコード
s=input()d=int(input())mod=10**9+7digit_sum=0blind_count=0for i in range(len(s)):if s[i]=="?":blind_count+=1else:digit_sum+=int(s[i])while digit_sum>9:digit_sum-=9def 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 1else:#di!=dj==0のとき、条件を満たすaは存在しないreturn 0else:#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)) % modif di == dj:ans += 1ans %= mod#これ必要ですか?return ansans = calc(0, blind_count, digit_sum, d)print(ans)