Editorial for Expected Fixed Points
Use this editorial only when stuck, and do not 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.
Approach
Let Ii be the indicator that person i receives gift i. The total value is
X=∑i=1nwiIi.
By linearity of expectation,
E[X]=∑i=1nwiE[Ii]=∑i=1nwiPr(Ii=1).
In a uniformly random permutation, person i is equally likely to receive any of the n gifts, so Pr(Ii=1)=1/n. Therefore
E[X]=n1∑i=1nwi.
The events Ii are dependent (exactly one person can receive gift 1, for example), but linearity does not care. Output the fraction modulo 109+7.
This is O(n).
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";
}
Comments0
No comments yet
Be the first to comment.
New comment
Log in to join the discussion.