题意:
就是在
[
1
,
n
]
[1,n]
[1,n]随机给出直角三棱锥的直角边a,b,c,求
1
h
2
\frac{1}{h^2}
h21的期望值。
可以用海伦公式(推到后面很麻烦了。。我直接百度了公式)算出 1 h 2 = 1 a 2 + 1 b 2 + 1 c 2 \frac{1}{h^2}=\frac{1}{a^2}+\frac{1}{b^2}+\frac{1}{c^2} h21=a21+b21+c21
那么实际上就是算 ∑ 1 a 2 n ∗ 3 \frac{∑\frac{1}{a^2}}{n}*3 n∑a21∗3
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#include <unordered_map>
#include <map>
#include <string>
#include <set>
#include <bitset>
using namespace std;
typedef long long ll;
const int maxn = 6e6 + 7;
const int mod = 998244353;
ll f[maxn];
int qpow(int x,ll n) {
int res = 1;
while(n > 0) {
if(n & 1) res = 1ll * res * x % mod;
x = 1ll * x * x % mod;
n >>= 1;
}
return res;
}
void init() {
ll sum = 0;//∑1/a^2
for(int i = 1;i < maxn;i++) {
sum += qpow(1ll * i * i % mod,mod - 2);
sum %= mod;
f[i] = 1ll * sum * qpow(i*1ll,mod - 2) % mod;
}
}
int main() {
init();
int T;scanf("%d",&T);
while(T--) {
int n;scanf("%d",&n);
printf("%lld\n",f[n] * 3 % mod);
}
return 0;
}
//100
//1000000