最容易懂的题解
最后结果是`
中间过程找这个博客
#include <iostream>
#include <cstdio>
using namespace std;
const int mod = 1e9 + 7 ;
typedef long long ll ;
const int N = 1e3 + 10 ;
ll a[N] ;
ll mu[N] ;
ll qmi(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()
{
int n ;
while(scanf("%d" , &n) !=EOF)
{
for(int i = 1 ;i <= n;i ++)
scanf("%d" , &a[i]) ;
for(int i = 1 ;i <= n;i ++)
{
mu[i] = 1 ;
for(int j = 1 ;j&& j <= n ;j ++)
if(j == i) continue ;
else
mu[i] = mu[i] * (a[j] * a[j] % mod - a[i] * a[i] % mod + mod) % mod ;
mu[i] = qmi(mu[i] , mod - 2) ;
}
ll ans = 0 ;
for(int i = 1 ;i <= n;i ++)
{
ans = (ans + qmi(2 , mod - 2) * qmi(a[i] , mod - 2) % mod * mu[i] % mod + mod ) % mod ;
}
printf("%lld
" , ans) ;
}
return 0 ;
}