結果
問題 |
No.3089 Base M Numbers, But Only 0~9
|
ユーザー |
|
提出日時 | 2025-04-04 23:24:52 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 324 ms / 2,000 ms |
コード長 | 727 bytes |
コンパイル時間 | 287 ms |
コンパイル使用メモリ | 82,224 KB |
実行使用メモリ | 93,428 KB |
最終ジャッジ日時 | 2025-04-04 23:24:58 |
合計ジャッジ時間 | 5,877 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 19 |
ソースコード
MOD = 998244353 M = int(input()) N = input() L = len(N) N = [ord(N[i]) - ord('0') for i in range(L)] k = [-1] * 10 for s in range(10): ok, ng = 0, 1 << 62 while ng - ok > 1: mid = (ok + ng) >> 1 if 10 * mid + s < M: ok = mid else: ng = mid k[s] = ok X = 1 c = [-1] * L for i in range(L): if i == 0 and N[i] == 0: c[i] = k[N[i]] else: c[i] = k[N[i]] + 1 X = (X * c[i]) % MOD pM = [1] while len(pM) <= L: pM.append(pM[-1] * M % MOD) acc = [(5 * k[i] * (k[i] + 1) + i * (k[i] + 1)) % MOD for i in range(10)] ans = 0 for i in range(L): ans += acc[N[i]] * pM[L - 1 - i] * X * pow(c[i], MOD - 2, MOD) ans %= MOD print(ans)