已知 ,求 在模1e9+7意义下的值。

保证 a_i 都是正整数,并且 a_i 各不相同。

-----------------------------------------

先解里面的式子,裂项相消。

------------------------------------

所以原式等于

---------------------------------------

Code:

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod = 1e9 + 7;
ll a[1005], a2[1005];
ll power(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) > 0)
    {
        for (int i = 1; i <= n; i++)
        {
            scanf("%lld", &a[i]);
            a2[i] = a[i] * a[i] % mod;
        }
        ll ans = 0;
        for (int i = 1; i <= n; i++)
        {
            ll res = a[i];
            for (int j = 1; j <= n; j++)
            {
                if (i == j)
                    continue;
                res *= (a2[j] - a2[i] + mod);
                if (res >= mod)
                    res %= mod;
            }
            res = power(res, mod - 2);
            ans += res;
            if (ans >= mod)
                ans %= mod;
        }
        ans = ans * power(2, mod - 2) % mod;
        printf("%lld\n", ans);
    }
}