Tetrahedron

Problem Description

Generate three integers a,b,and c in[1,n] with equal probability independently and use them as the three right-angle side length of a right-angled tetrahedron. Find the expectation of the reciprocal square of the distance from the right-angle apex to the slope(Euclidean distance).

For each test case ,output a line containing the answer mod 998244353

Input

In the first line, you should read an integer T denoting the number of test cases.

In every test case,the only line will include an integer n.

It is guaranteed that T is no larger than (2 imes 10^{6}) and n is no larger than (6 imes 10^{6}) .

Output

For each test case,output the only line containing just one integer denoting the answer mod 998244353

Sample Input

3
1
2
3

Sample Output

3
124780546
194103070

题解

#include<iostream>
#include<cstdio>
using namespace std;
#define mod 998244353 
long long F[6000005];
int T,n;
//快速幂 
long long pow(long long a,long long  b){
	long long ans=1;
	while(b){
		if(b&1){
			ans=ans*a%mod;
		}
		b>>=1;
		a=a*a%mod;
	}
	return ans;
}


int main(){
	//先打表求出逆元的前缀和 
	for(long long i=1;i<=6000005;i++){
		F[i]=(pow(i*i%mod,mod-2)+F[i-1])%mod;
	}
	scanf("%d",&T);	
	while(T--){
		scanf("%d",&n);	
		//输出 
		printf("%lld
",3*F[n]%mod*pow(n,mod-2)%mod);
	}
	return 0;
}

这题主要就是求期望,求(frac{1}{h^{2}}) 的期望,所以在此之前,我们要求出(frac{1}{h^{2}})用a、b、c表示的式子

  • 设斜面三条边长度为(x,y,z),面积为(S),四面体体积为(V)

  • (V=abc/6=Sh/3),两边同时平方得到:

    [frac{1}{36} a^2 b^2 c^2=frac{h^2 S^2}{9} ]

  • 海伦公式

    [S=sqrt{p(p-x)(p-y)(p-z)}, quad p=(x+y+z)/2 ]

  • 代入得:

    [16 a^2 b^2 c^2=4 h^2 2p (2 p-2 x) (2 p-2 y) (2 p-2 z) \ 16 a^2 b^2 c^2=4 h^2 (x+y+z) (-x+y+z) (x-y+z) (x+y-z) ]

  • 直接化简右边计算量较大,由于其是轮换对称的,考虑含(x)的项:(x^4,x^2y^2)的系数

    • 首先(x)的奇数次幂系数为(0),因为(-(x+y+z) (-x+y+z) (-x+y-z) (x+y-z)),注意到前两项(x)加的内容是相同的,但是(x)本身符号不同,所以前两项中的(x)要么同时取,要么同时不取,否则就会被对方抵消,后两项也一样

    • (x^2 y z)系数为(0),若取前两项的(x),则是(-2yz);取后两项的(x),则是(2yz),故是(0)

    • (x^4)系数为(-1)

    • (x^2y^2)系数为(2),同样讨论两个(x)取自前两项还是后两项

    • [(x+y+z) (-x+y+z) (x-y+z) (x+y-z) = -sum_{cyc}x^4+2sum_{cyc}x^2y^2= sum_{cyc} x^2(2y^2-x^2) ]

  • 勾股定理:

    [x^2=a^2+b^2 \ y^2=a^2+c^2 ]

  • 代入得:

    [sum_{cyc} x^2(2y^2-x^2)=sum_{cyc}(a^2+b^2)(a^2-b^2+2c^2) \ sum_{cyc}(a^2+b^2)(a^2-b^2)+sum_{cyc}2(a^2+b^2)c^2 \ =2 sum_{cyc}(c^2a^2+b^2c^2)=4sum_{cyc}a^2b^2 ]

  • [16 a^2 b^2 c^2=16 h^2 sum_{cyc}a^2b^2 \ ]

  • 可得到(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}}) ,下面附上一些直角四面体的性质。

得到这个公式后,我们可以得出:

(E(frac{1}{h^{2}})= E(frac{1}{a^{2}}+frac{1}{b^{2}}+{frac{1}{c^{2}}})=3 imes E(frac{1}{x^{2}}) ,xin [1,n]) ,x取整数

因为a、b、c都是相互独立的,所以(frac{1}{a^{2}})(frac{1}{b^{2}})(frac{1}{c^{2}}) 可以视为一个东西,我们这里用(frac{1}{x^{2}}) 来代替,x是从1~n中均匀随机选择的,然后前边乘以个3就行了。

那么现在我们就是要求(E(frac{1}{x^{2}}),xin [1,n]) ,x取整数就行了。

我们要求这个离散的变量的期望,那就用相应的结果乘以对应的概率,再求和。因为它是均匀随机分布的,所以概率固定是(frac{1}{n})所以可以得出以下式子:

(E(frac{1}{x^{2}})=(1 imes frac{1}{n}+frac{1}{4} imes frac{1}{n}+...+frac{1}{n^{2}} imes frac{1}{n}))

然后可以把(frac{1}{n}) 提出来

(E(frac{1}{x^{2}})=(1+frac{1}{4}+...+frac{1}{n^{2}}) imes frac{1}{n})

由于答案是要模一个数的,我们这里记作是模mod,所以可以写成

(E(frac{1}{x^{2}})=[(1+frac{1}{4}+...+frac{1}{n^{2}}) imes frac{1}{n}]\%mod)

(=[(1+frac{1}{4}+...+frac{1}{n^{2}})\%mod imes frac{1}{n}\%mod]\%mod)

(=[(1\%mod+frac{1}{4}\%mod+...+frac{1}{n^{2}}\%mod)\%mod imes frac{1}{n}\%mod]\%mod)

这个式子最后再乘一个3就是我们要求的东西了,我们可以发现这个式子中最基本的操作就是分数取模,那么也就需要求逆元,然后这个式子前边就是一个前缀和,照着这些写代码就行了。

原文地址:https://www.cnblogs.com/fate-/p/13442469.html