给定一个数组arr,返回不包含本位置值的累乘数组
例如,arr=[2,3,1,4],返回[12, 8, 24, 6],即除自己外,其他位置上的累乘
[要求]
时间复杂度为
,额外空间复杂度为
第一行有两个整数N, P。分别表示序列长度,模数(即输出的每个数需要对此取模)
接下来一行N个整数表示数组内的数
输出N个整数表示答案
4 100000007 2 3 1 4
12 8 24 6
N,P = map(int,input().split())
array = list(map(int,input().split()))
l = [0 for _ in range(N+1)]
r = [0 for _ in range(N+1)]
l[0] = 1
r[N] = 1
for i in range(N):
l[i+1] = l[i] * array[i] % P
for i in range(N-1,-1,-1):
r[i] = r[i+1] * array[i] % P
answer = []
for i in range(N):
answer.append(l[i]*r[i+1]%P)
print(' '.join(map(str,answer)))