数学

Description

 

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

现要求把所有的B算出来。

 

 

Input

 

   输入包含多组测试数据。对于每组数据,第 1 行,1 个整数N(N100,000), 表示数列的长度。第 2 行,个整数A1,A2,...,AN(1 Ai109),表示给出的数列。输入以一个 表示结尾。

 

 

Output

 

对于每组数据,输出一行,个整数用空格分隔,表示算出的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;
}

posted @ 2013-03-17 08:39  forevermemory  阅读(113)  评论(0编辑  收藏  举报