結果
| 問題 |
No.2318 Phys Bone Maker
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-02-26 03:35:28 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,888 bytes |
| コンパイル時間 | 291 ms |
| コンパイル使用メモリ | 82,304 KB |
| 実行使用メモリ | 96,272 KB |
| 最終ジャッジ日時 | 2024-09-18 12:59:33 |
| 合計ジャッジ時間 | 21,371 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 1 |
| other | AC * 24 WA * 21 |
ソースコード
import sys
from collections import deque, Counter
from math import gcd, log10, pi, sqrt, ceil
from bisect import bisect, bisect_left, bisect_right, insort
from typing import Iterable, TypeVar, Union, Tuple, Iterator, List
import copy
import heapq
import itertools
import math
import random
from fractions import Fraction
from functools import lru_cache, partial, cmp_to_key
import operator
input = sys.stdin.readline
sys.setrecursionlimit(10000000)
mod = 998244353
INF = 1 << 61
DIFF = 10 ** -9
DX = [1, 0, -1, 0, 1, 1, -1, -1]
DY = [0, 1, 0, -1, 1, -1, 1, -1]
def read_values(): return map(int, input().split())
def read_index(): return map(lambda x: int(x) - 1, input().split())
def read_list(): return list(read_values())
def read_lists(N): return [read_list() for _ in range(N)]
def prime_factors(n):
P = []
for m in range(2, int(n ** 0.5) + 1):
if n % m:
continue
P.append(m)
while n % m == 0:
n //= m
return P
def divisor(n):
D = []
for m in range(1, int(n ** 0.5) + 1):
if n % m:
continue
D.append(m)
if m * m != n:
D.append(n // m)
D.sort()
return D
def main():
N = int(input())
P = prime_factors(N)
D = divisor(N)
dp = {d: 0 for d in D}
dp[1] = 1
for i, d1 in enumerate(D):
for d2 in D[i+1:]:
if d2 % d1:
continue
r = 1
x1, x2 = d1, d2
for p in P:
k = 0
while x1 % p == 0 and x2 % p == 0:
x1 //= p
x2 //= p
k += 1
if x2 % p == 0:
continue
r *= k + 1
r %= mod
dp[d2] += dp[d1] * r % mod
dp[d2] %= mod
print(dp[N])
if __name__ == "__main__":
main()