solution
d p [ i + 1 ] = ( d p [ i ] + 1 ) ∗ i ∗ ( n − i ) p C n 2 + ( d p [ i + 1 ] + 1 ) ∗ ( i ( n − i ) ( 1 − p ) C n 2 + 1 − i ( n − i ) C n 2 ) dp[i+1]=(dp[i]+1)*\frac{i*(n-i)p}{C_n^2}+(dp[i+1]+1)*(\frac{i(n-i)(1-p)}{C_n^2}+1-\frac{i(n-i)}{C_n^2}) dp[i+1]=(dp[i]+1)∗Cn2i∗(n−i)p+(dp[i+1]+1)∗(Cn2i(n−i)(1−p)+1−Cn2i(n−i))
d p [ i + 1 ] = d p [ i ] + C n 2 i ( n − i ) p dp[i+1]=dp[i]+\frac{C_n^2}{i(n-i)p} dp[i+1]=dp[i]+i(n−i)pCn2
code
/*SiberianSquirrel*/
/*CuteKiloFish*/
#include <bits/stdc++.h>
using namespace std;
long double dp[101000];
void solve() {
int o; cin >> o;
while(o --) {
int n; cin >> n;
long double p; cin >> p;
dp[1] = 0;
for(int i = 1; i < n; ++ i) {
dp[i + 1] = dp[i] + (1.0 * n * (n - 1) / 2.0) / (1.0 * i * (n - i) * p);
}
cout << fixed << setprecision(3) << dp[n] << endl;
}
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
#ifdef ACM_LOCAL
freopen("input", "r", stdin);
freopen("output", "w", stdout);
#endif
solve();
return 0;
}