from copy import deepcopy
import math
# e.g. lowbit = [0, 1, 2, 1, 4, 1, 2, 1, 8, 1, 2, 1, 4, 1, 2, 1, 16, 1, 2, 1, 4, 1, 2, 1, 8, 1, 2, 1, 4, 1, 2, 1, 32]
lowbit = [num & -num for num in range(1000000)]
def sum(var):
x, y, z = 0, 0, 0
while var > 0:
x += C[var][0]
y += C[var][1]
z += C[var][2]
var -= lowbit[var]
return x, y, z
def add(l, r, a, b, c):
for i in range(l, r + 1):
A[i][0] += a
A[i][1] += b
A[i][2] += c
j = i
while j <= N:
C[j][0] += a
C[j][1] += b
C[j][2] += c
j += lowbit[j]
def multiply(l, r, k):
for i in range(l, r + 1):
A[i] = [_ * k for _ in A[i]]
j = i
while j <= N:
C[j][0] = C[j][0] + A[i][0] / k * ( k - 1)
C[j][1] = C[j][1] + A[i][1] / k * ( k - 1)
C[j][2] = C[j][2] + A[i][2] / k * ( k - 1)
j += lowbit[j]
def transpose(l, r):
for i in range(l, r + 1):
P = deepcopy(A[i])
A[i][0], A[i][1], A[i][2] = A[i][1], A[i][2], A[i][0]
j = i
while j <= N:
C[j][0] = C[j][0] - P[0] + A[i][0]
C[j][1] = C[j][1] - P[1] + A[i][1]
C[j][2] = C[j][2] - P[2] + A[i][2]
j += lowbit[j]
if __name__ == '__main__':
N, M = list(map(int, input().split()))
# 初始化A数组 C数组的值
A = [[0, 0, 0] for i in range(N + 1)]
C = [[0, 0, 0] for i in range(N + 1)]
for i in range(M):
slist = list(map(int, input().split()))
opt = slist[0]
if opt == 1: # 代表这次操作需要将第l个数到第r个数中v的倍数除以v
l, r, a, b, c = slist[1], slist[2], slist[3], slist[4], slist[5]
add(l, r, a, b, c)
elif opt == 2:
l, r, k = slist[1], slist[2], slist[3]
multiply(l, r, k)
elif opt == 3:
l, r = slist[1], slist[2]
transpose(l, r)
else:
l, r = slist[1], slist[2]
x1, y1, z1 = sum(r)
x2, y2, z2 = sum(l - 1)
x, y, z = x1 - x2, y1 - y2, z1 - z2
print(int(math.pow(x, 2) + math.pow(y, 2) + math.pow(z, 2)) % 1000000007)
问题在于:print(int(math.pow(x, 2) + math.pow(y, 2) + math.pow(z, 2)) % 1000000007)
应该使用x * x 而不是 math.pow(x, 2)
你好,我是有问必答小助手。为了技术专家团更好地为您解答问题,烦请您补充下(1)问题背景详情,(2)您想解决的具体问题,(3)问题相关代码图片或者报错信息。便于技术专家团更好地理解问题,并给出解决方案。
您可以点击问题下方的【编辑】,进行补充修改问题。