結果

問題 No.3187 Mingle
ユーザー sasa8uyauya
提出日時 2025-06-20 23:07:32
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 879 bytes
コンパイル時間 477 ms
コンパイル使用メモリ 82,384 KB
実行使用メモリ 268,460 KB
最終ジャッジ日時 2025-06-20 23:08:41
合計ジャッジ時間 6,502 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 9 TLE * 21
権限があれば一括ダウンロードができます

ソースコード

diff #

class FenwickTree:
  def __init__(self,n,M):
    self._n=n
    self.data=[0]*n
    self.M=M
  
  def add(self,p,x):
    p+=1
    while p<=self._n:
      self.data[p-1]+=x
      self.data[p-1]%=self.M
      p+=p&(-p)
  
  def sum(self,left,right):
      return (self._sum(right)-self._sum(left))%self.M
  
  def _sum(self,r):
    s=0
    while r>0:
      s+=self.data[r-1]
      s%=self.M
      r-=r&(-r)
    return s


n,M=map(int,input().split())
f=[[] for i in range(n+1)]
for i in range(1,n+1):
  for j in range(i,n+1,i):
    f[j]+=[i]
fb=[1,1]
for i in range(2,n+1):
  fb+=[(M//i)*fb[M%i]*(-1)%M]
q=[0]*(n+1)
r=[[] for i in range(n+1)]
ft=FenwickTree(n+1,M)
for i in range(3,n+1):
  for j in r[i]:
    ft.add(j,-q[j])
  q[i]+=ft.sum(i-i//2,i)
  q[i]+=i
  q[i]*=fb[i-len(f[i])]
  q[i]%=M
  ft.add(i,q[i]*len(f[i]))
  for j in f[i]:
    if i+j<=n:
      r[i+j]+=[i]
print(q[n])
0