結果
問題 |
No.3089 Base M Numbers, But Only 0~9
|
ユーザー |
![]() |
提出日時 | 2025-04-04 22:35:50 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 122 ms / 2,000 ms |
コード長 | 864 bytes |
コンパイル時間 | 300 ms |
コンパイル使用メモリ | 82,336 KB |
実行使用メモリ | 93,124 KB |
最終ジャッジ日時 | 2025-04-04 22:36:01 |
合計ジャッジ時間 | 3,053 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 19 |
ソースコード
""" 120+10 120+0 """ import sys from sys import stdin mod = 998244353 M = int(stdin.readline()) A = list(map(int,list(stdin.readline()[:-1]))) A.reverse() C = [M//10 for i in range(10)] for i in range(M%10): C[i] += 1 Cinv = [ pow(c,mod-2,mod) for c in C ] Csum = [] for i in range(10): fi = i now = (fi+10*(C[i]-1)+fi) * C[i] // 2 Csum.append(now % mod) #print (C) #print (Csum) all_cnt = 1 for i in range(len(A)): if i == len(A)-1 and A[i] == 0: all_cnt *= C[A[i]]-1 else: all_cnt *= C[A[i]] all_cnt %= mod ans = 0 base = 1 for i in range(len(A)): if i == len(A)-1 and A[i] == 0: nc = C[A[i]]-1 cinv = pow(nc,mod-2,mod) else: cinv = Cinv[A[i]] now = all_cnt * cinv * Csum[A[i]] * base % mod ans += now ans %= mod base *= M base %= mod print (ans)