結果
| 問題 |
No.8112 区間和係数多項式?
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-03-04 18:07:04 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 5,023 ms / 6,000 ms |
| コード長 | 1,473 bytes |
| コンパイル時間 | 622 ms |
| コンパイル使用メモリ | 82,316 KB |
| 実行使用メモリ | 320,272 KB |
| 最終ジャッジ日時 | 2024-09-29 21:35:56 |
| 合計ジャッジ時間 | 52,551 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 29 |
ソースコード
n, b, q = map(int, input().split())
c1, d1 = map(int, input().split())
c2, d2 = map(int, input().split())
c3, d3 = map(int, input().split())
c4, d4 = map(int, input().split())
c5, d5 = map(int, input().split())
class fenwick_tree():
n=1
data=[0 for i in range(n)]
def __init__(self,N):
self.n=N
self.data=[0 for i in range(N)]
def add(self,p,x):
p+=1
while(p<=self.n):
self.data[p-1]+=x
p+=p& -p
def sum(self,l,r):
return self.sum0(r)-self.sum0(l)
def sump(self,r):
return self.data[r - 1]
def sum0(self,r):
s=0
while(r>0):
s+=self.data[r-1]
r-=r&-r
return s
a = [c1]
for i in range(n - 1):
a.append(a[-1] * d1 % b)
A = fenwick_tree(n)
for i in range(1,n):
A.add(i - 1, a[i])
def p(x):
# the number of trailing zeros
#x: int
X = x
if x==0:
return 0
res=0
v = 1
while(x%2==0):
x//=2
res+=1
v *= 2
return X - v
P = [p(i) for i in range(n + 1)]
i, j, x, y = c2 % n, c3 % n, c4 % b, c5 % b
ans = 0
for _ in range(q):
if i >= 1:
A.add(i - 1, x - a[i])
a[i] = x
ans = 0
yy = 1
jj = j
while jj:
ans += A.sump(jj) * yy
jj = P[jj]
yy *= y
yy %= b
ans += yy * a[0]
print(ans % b)
i *= d2
i %= n
j *= d3
j %= n
x *= d4
x %= b
y *= d5
y %= b