Editorial for Expected Fixed Points
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Approach
Let be the indicator that person
receives gift
. The total value is
.
By linearity of expectation,
.
In a uniformly random permutation, person is equally likely to receive any of the
gifts, so
. Therefore
.
The events are dependent (exactly one person can receive gift
, for example), but
linearity does not care. Output the fraction modulo
.
This is .
Solution (C++)
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
long long modpow(long long a, long long e) {
long long r = 1;
a %= MOD;
while (e) {
if (e & 1) {
r = r * a % MOD;
}
a = a * a % MOD;
e >>= 1;
}
return r;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
long long sum = 0;
for (int i = 0; i < n; i++) {
long long w;
cin >> w;
sum += w;
if (sum >= MOD) {
sum %= MOD;
}
}
sum %= MOD;
cout << sum * modpow(n, MOD - 2) % MOD << "\n";
}
Comments