题意:给你直角四面体的三边a,b,c,三者两两垂直,问a,b,c从[1,n]随机挑选,求三者交点到底面的距离的平方的逆元。
直角四面体有条结论是1/(h2)=1/(a2)+1/(b2)+1/(c2);然而比赛的时候没想到怎么算期望,捂脸。
算法:E(1/h2)=E(1/a2)+E(1/b2)+E(1/c2)=3*E(1/a2)//a2,b2,c2指的是sum(a2),sum(b2),sum(c2),每个1/a2的概率都为1/n;
还有输入输出,这题卡了cin和cout
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const ll mod = 998244353;
const int N = 6e6 + 100;
ll arr[N];
ll quick(ll a, ll b) {
a %= mod;
ll ans = 1;
while (b) {
if (b & 1) ans = (ans * a) % mod;
a = (a * a) % mod;
b /= 2;
}
return ans;
}
void init() {
for (ll i = 1; i <= 6e6; i++) {
arr[i] = quick(i*i%mod,mod-2);
arr[i] = (arr[i] + arr[i - 1])%mod;
}
}
int main() {
int t;
scanf("%d", &t);
init();
while (t--) {
ll n;
scanf("%lld",&n);
printf("%lld\n", 3 * arr[n] * quick(n, mod - 2) % mod);
}
}
本文探讨了直角四面体中三边长度随机选取时,交点到底面距离平方逆元的期望值计算问题。通过数学推导和C++编程实现,给出了一种有效解决此类概率问题的方法。
560

被折叠的 条评论
为什么被折叠?



