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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
using namespace std; #define forl(i, l, r) for (int i = l; i <= r; i++) #define forr(i, r, l) for (int i = r; i >= l; i--) #define for1(i, n) for (int i = 1; i <= n; i++) #define fro1(i, n) for (int i = 1; i <= n; i++) #define for0(i, n) for (int i = 0; i < n; i++) #define fro0(i, n) for (int i = 0; i < n; i++) #define meminf(a) memset(a, inf, sizeof(a)) #define mem_1(a) memset(a, -1, sizeof(a)) #define mem0(a) memset(a, 0, sizeof(a)) #define memcp(a,b) memcpy(a,b,sizeof(b)) #define oper(type) bool operator <(const type y)const #define mp make_pair #define pu_b push_back #define pu_f push_front #define po_b pop_back #define po_f pop_front #define fi first #define se second #define whiel while #define retrun return typedef pair<long long, long long> pll; typedef vector<long long> vll; typedef pair<int, int> pii; typedef unsigned long long ull; typedef vector<int> vii; typedef double db; typedef long long ll; typedef int itn; void (initializer_list<int*> li){for(auto ptr=li.begin();ptr!=li.end();ptr++)scanf("%d",*ptr);} void (initializer_list<ll*> li){for(auto ptr=li.begin();ptr!=li.end();ptr++)scanf("%lld",*ptr);} void (initializer_list<db*> li){for(auto ptr=li.begin();ptr!=li.end();ptr++)scanf("%lf",*ptr);} void out(initializer_list<int> li){for(auto ptr=li.begin();ptr!=li.end();ptr++)printf("%d ",*ptr);} void outln(initializer_list<int> li){for(auto ptr=li.begin();ptr!=li.end();ptr++)printf("%dn",*ptr);} void out(initializer_list<ll> li){for(auto ptr=li.begin();ptr!=li.end();ptr++)printf("%lld ",*ptr);} void outln(initializer_list<ll> li){for(auto ptr=li.begin();ptr!=li.end();ptr++)printf("%lldn",*ptr);} int (int &a,int &b,int &c,int &d){return scanf("%d%d%d%d",&a,&b,&c,&d);} int (int &a,int &b,int &c){return scanf("%d%d%d",&a,&b,&c);} int in(int &a,int &b){return scanf("%d%d",&a,&b);} int in(ll &a){return scanf("%lld",&a);} int in(int &a){return scanf("%d",&a);} int in(char *s){return scanf("%s",s);} int in(char &c){return scanf("%c",&c);} void out(int a,bool ln){printf("%d%c",a,ln? 'n':' ');} void out(ll a,bool ln){printf("%lld%c",a,ln? 'n':' ');} void out(db a,int digit,bool ln){printf("%.*f%c",digit,a,ln? 'n':' ');} const db pi = acos((db)-1); const ll inf =0x3f3f3f3f; const db eps = 1e-8; const int N = 1.1e3; const int M = 2.1e5; const ll mod = 1e9+7; int sign(db a) {return a < -eps ? -1 : a > eps;} int db_cmp(db a, db b){ return sign(a-b);}
int a[N]; ll qPow(ll a, ll b, ll c) { ll ret = 1; while (b) { if (b & 0x1) ret = ret * a % c; a = a * a % c; b >>= 1; } return ret; } int main() { #ifdef PerpEternal freopen("/Users/perpeternal/Documents/Sketch/data/in.dat", "r", stdin); #endif int n; while(~in(n)){ for1(i,n)in(a[i]); ll ans=0; for1(i,n){ ll tm=1; for1(j,n){ if(j!=i){ tm=tm*((1ll*a[j]*a[j]%mod-1ll*a[i]*a[i]%mod+mod)%mod)%mod; } } ans=(ans+qPow(2*a[i],mod-2,mod)*qPow(tm,mod-2,mod)%mod)%mod; } out(ans,1); } return 0; }
|
近期评论