結果
| 問題 |
No.2699 Simple Math (Returned)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-04-18 16:51:58 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 812 ms / 2,000 ms |
| コード長 | 1,043 bytes |
| コンパイル時間 | 302 ms |
| コンパイル使用メモリ | 82,320 KB |
| 実行使用メモリ | 77,048 KB |
| 最終ジャッジ日時 | 2024-10-10 10:08:36 |
| 合計ジャッジ時間 | 11,275 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 11 |
ソースコード
import sys
def printe(*args, end="\n", **kwargs):
print(*args, end=end, file=sys.stderr, **kwargs)
def main():
MOD = 998244353
for _ in range(int(input())):
N, M = map(int, input().split())
if N <= M:
print((pow(10, N, MOD) - 1) % MOD)
continue
divided_digits = N
divisor_interval = M - 1
# まずは確実に0で埋められるところを埋めきる
divided_digits %= (divisor_interval + 1) * 2
if divided_digits == 0:
print(0)
continue
if divided_digits >= divisor_interval + 2:
min_digit = divided_digits - divisor_interval
max_digit = divided_digits - (min_digit - 1)
print((pow(10, max_digit, MOD) - pow(10, min_digit - 1, MOD)) % MOD)
else:
print((pow(10, divided_digits, MOD) - 1) % MOD)
# 11111111111
# 1001
# 01101111111
# 00100111111
# 00000011111
# 00000001101
# 00000000100
if __name__ == "__main__":
main()