题目:

题目

解题思路:

题目给出∫(dx/(1+x^2))=π/2(x=0->∞),于是推出∫(dx/(a^2+x^2))=π/2a.观察到题目要求的是∫(dx/∏(ai^2+x^2)),于是我们想到把分母拆开来变成n项相加,分母为(ai^2+x^2),分子可以用待定系数求得,算出来是∏(aj^2-ai^2)//(j!=i),拆开来之后对于每一项分别积分然后再相加答案就出来了.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
ll a[2005];
ll qpow(ll a,int b){
ll res=1;
for(;b;b>>=1,a=a*a%mod)
if(b&1)res=res*a%mod;
return res;
}
int main(){
int n;
while(~scanf("%d",&n)){
ll ans=0;
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(int i=1;i<=n;i++){
ll res=2*a[i]%mod;
for(int j=1;j<=n;j++)
if(i!=j)
res=(a[j]*a[j]-a[i]*a[i])%mod*res%mod;
res=(res+mod)%mod;
ans+=qpow(res,mod-2);
ans%=mod;
}
printf("%lld\n",ans);
}
return 0;
}