数学

来源:互联网 发布:段宁毛笔行书 mac 编辑:程序博客网 时间:2024/04/28 10:34

Problem Description

给出数列 A1 , A2 , . . . , AN,并设
Bi = (A1 * A2 · · · AN/Ai) mod (10^9 + 7)
现要求把所有的 Bi 算出来。

Input

输入包含多组测试数据。对于每组数据,第1行, 1个整数 N(1 <= N <= 100,000), 表示数列的长度。第2行,N 个整数 A1 , A2 , . . . , A N(1<=Ai<=10^9),表示给出的数列。输入以一个0表示结尾。

Output

对于每组数据,输出一行,N个整数用空格分隔,表示算出的B1 , B2 , . . . , BN。

Sample Input

31 2 30

Sample Output

6 3 2

Author

HYNU

题目中的化简:
#include<stdio.h>#define M 1000000007long long  a[100005],b[100005],c[100005];int main(){int i,n;//freopen("a.txt","r",stdin);while(scanf("%d",&n)!=EOF&&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])%M;for(i=n;i>=1;i--)c[i]=(c[i+1]*a[i])%M;for(i=1;i<=n;i++)if(i!=n) printf("%lld ",(b[i-1]*c[i+1])%M);else printf("%lld\n",(b[i-1]*c[i+1])%M);}return 0;}
0 0
原创粉丝点击