zoukankan      html  css  js  c++  java
  • 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就是我们要求的东西了,我们可以发现这个式子中最基本的操作就是分数取模,那么也就需要求逆元,然后这个式子前边就是一个前缀和,照着这些写代码就行了。

  • 相关阅读:
    python--输出spwm的数组
    爬虫二:爬取糗事百科段子
    爬虫一:爬取信息
    Python中的切片操作
    JSON
    python 中的异常处理与种类
    register的功能
    static的功能
    网络安全的认识
    VMware5.5-vCenter Converter(转换)
  • 原文地址:https://www.cnblogs.com/fate-/p/13442469.html
Copyright © 2011-2022 走看看