2019牛客暑期多校训练营(第一场)-B.Integration()

mac2022-06-30  21

链接:https://ac.nowcoder.com/acm/contest/881/B

题意:给出n,和数组a[n],求特定表达式取模后的值。

思路:用到列项相消:

   那么,,然后就变成了求和问题,利用费马小定理求逆元可计算得到结果。

AC代码:

#include<cstdio> using namespace std; const int MOD=1e9+7; typedef long long LL; int n; LL a[1005],c[1005]; LL ans; LL qpow(LL a,LL b){ LL res=1; while(b){ if(b&1) res=res*a%MOD; a=a*a%MOD; b>>=1; } return res; } int main(){ while(~scanf("%d",&n)){ for(int i=1;i<=n;++i) scanf("%lld",&a[i]),c[i]=1; ans=0; for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) if(j!=i) c[i]=c[i]*((a[j]*a[j]%MOD-a[i]*a[i]%MOD+MOD)%MOD)%MOD; for(int i=1;i<=n;++i) ans=(ans+qpow(2*a[i]%MOD*c[i]%MOD,MOD-2))%MOD; printf("%lld\n",ans); } return 0; }

 

转载于:https://www.cnblogs.com/FrankChen831X/p/11213135.html

最新回复(0)