描述
给出数列A1,A2 ,...,AN,并设
现要求把所有的Bi 算出来。
输入
输入包含多组测试数据。对于每组数据,第 1 行,1 个整数N(1 ≤N≤100,000), 表示数列的长度。第 2 行,N 个整数A1,A2,...,AN(1 ≤Ai≤109),表示给出的数列。输入以一个 0 表示结尾
输出
对于每组数据,输出一行,N 个整数用空格分隔,表示算出的B1,B2,...,BN。
样例输入
3
1 2 3
0
1 2 3
0
样例输出
6 3 2
#include<iostream>
#include<cstdio>
#define MX 1000000007
#define M 100001
using namespace std;
__int64 a[M],b[M],c[M];
int main()
{
int n;
while(~scanf("%d",&n)&&n){
a[0]=b[n+1]=1;
for(int i=1;i<=n;i++){
scanf("%I64d",&c[i]);
a[i]=(a[i-1]*c[i])%MX;
}
for(int i=n;i>=1;i--){
b[i]=(b[i+1]*c[i])%MX;
}
for(int i=1;i<n;i++){
printf("%I64d ",(a[i-1]*b[i+1])%MX);
}
printf("%I64d\n",(a[n-1]%MX));
}
return 0;
}