結果
問題 |
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 |
ソースコード
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)