给定一个数组arr,返回不包含本位置值的累乘数组
例如,arr=[2,3,1,4],返回[12, 8, 24, 6],即除自己外,其他位置上的累乘
[要求]
时间复杂度为,额外空间复杂度为
第一行有两个整数N, P。分别表示序列长度,模数(即输出的每个数需要对此取模)
接下来一行N个整数表示数组内的数
输出N个整数表示答案
4 100000007 2 3 1 4
12 8 24 6
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int p = scanner.nextInt(); long[] arr = new long[n]; for(int i=0;i<n;i++){ arr[i] = scanner.nextInt(); } long[] lr = new long[n]; long[] rl = new long[n]; lr[0]=1; rl[n-1]=1; for(int i=1;i<n;i++){ lr[i] = lr[i-1] * arr[i-1] % p; } for(int i=n-2;i>=0;i--){ rl[i] = rl[i+1] * arr[i+1] % p; } for(int i=0;i<n;i++){ System.out.print(lr[i]*rl[i]%p+" "); } } }