题意:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6814
分析:
对该立体图形采用不同的方法求体积,设底面面积为 (S),有:
[a*b*c*frac{1}{6}=S*h*frac{1}{3} Longrightarrow h^2=frac{a^2b^2c^2}{4S^2} Longrightarrow frac{1}{h^2}=frac{4S^2}{a^2b^2c^2}
]
根据海伦公式:(S=sqrt{p(p-a)(p-b)(p-c)}),其中 (a,b,c) 分别为三角形边长,(p=frac{a+b+c}{2})。
代入:(x=sqrt{a^2+b^2},y=sqrt{a^2+c^2},z=sqrt{b^2+c^2}),最终化简可得:
[frac{1}{h^2}=frac{1}{a^2}+frac{1}{b^2}+frac{1}{c^2}
]
所以,
[E(frac{1}{h^2})=3E(frac{1}{a^2})=frac{3}{n}sum_{i=1}^{n}{frac{1}{i^2}}
]
也可以直接套用结论:https://wenku.baidu.com/view/b58ffe8132d4b14e852458fb770bf78a65293a0b.html
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=998244353;
const int N=6e6+5;
ll sum[N];
ll power(ll a,ll b)
{
ll res=1;
a%=mod;
while(b)
{
if(b&1) res=res*a%mod;
a=a*a%mod;
b>>=1;
}
return res;
}
void init()
{
sum[0]=0;
for(int i=1;i<N;i++)
sum[i]=(sum[i-1]+power(1LL*i*i,mod-2))%mod;
}
int main()
{
int T,n;
init();
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
ll inv=power(n,mod-2);
ll ans=3*inv%mod*sum[n]%mod;
printf("%lld
",ans);
}
return 0;
}