結果

問題 No.3187 Mingle
ユーザー ゼット
提出日時 2025-06-20 22:34:03
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,506 ms / 2,500 ms
コード長 678 bytes
コンパイル時間 469 ms
コンパイル使用メモリ 82,240 KB
実行使用メモリ 177,280 KB
最終ジャッジ日時 2025-08-13 07:40:16
合計ジャッジ時間 33,583 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

N,mod=map(int,input().split())
p=[0]*(N+1)
v=[0]*(N+1)
p[N]=1
v[N]=pow(N,-1,mod)
G=[[] for i in range(N+1)]
for x in range(2,N):
  for y in range(1,N+1):
    if x*y>N:
      break
    G[x*y].append(x)
u=[0]*(N+1)
for x in range(1,N+1):
  for y in range(1,N+1):
    if x*y>N:
      break
    u[x*y]+=1
v[N]=pow((N-u[x]),-1,mod)
for x in range(N-1,1,-1):
  for y in G[x]:
    l,r=x+1,x+y
    e=v[x+1]
    if r<=N:
      e-=v[r]
      e%=mod
    p[x]+=e
    p[x]%=mod
  if x>2:
    v[x]=v[x+1]+p[x]*pow((x-u[x]),-1,mod)
    v[x]%=mod
result=0
for x in range(3,N+1):
  result+=p[x]
  b=u[x]*pow(x,-1,mod)
  b%=mod
  b=1-b
  result+=(pow(b,-1,mod)-1)*p[x]
  result%=mod
print(result)
0