数学
给出数列A1,A2 ,...,AN,并设

现要求把所有的Bi 算出来。
Input
输入包含多组测试数据。对于每组数据,第 1 行,1 个整数N(1 ≤N≤100,000), 表示数列的长度。第 2 行,N 个整数A1,A2,...,AN(1 ≤Ai≤109),表示给出的数列。输入以一个 0 表示结尾。
Output
对于每组数据,输出一行,N 个整数用空格分隔,表示算出的B1,B2,...,BN。
Sample Input
3 1 2 3 0
Sample Output
6 3 2数学题采用两边夹的方法一个for
#include<stdio.h>
long long a[1000005];
long long b[1000005];
long long c[1000005];
int main()
{
int i,n;
while(scanf("%d",&n),n)
{
for(i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
}
b[0]=1;
c[n+1]=1;
for(i=1;i<=n;i++)
{
b[i]=(b[i-1]*a[i])%1000000007;
}
for(i=n;i>=1;i--)
{
c[i]=(c[i+1]*a[i])%1000000007;
}
for(i=1;i<=n;i++)
{
if(i==n) printf("%lld\n",(b[i-1]*c[i+1])%1000000007);
else printf("%lld ",(b[i-1]*c[i+1])%1000000007);
}
}
return 0;
}
为了明天所以选择坚定的执着今天。

浙公网安备 33010602011771号