• hdu 6814 Tetrahedron 规律+排列组合逆元


    题意:

    给你一个n,你需要从1到n(闭区间)中选出来三个数a,b,c(可以a=b=c),用它们构成一个直角四面体的三条棱(可看图),问你从D点到下面的三角形做一条垂线h,问你1/h2的期望

    题解:

    那么1/h2=1/a2+1/b2+1/c2

    总数就是n3

    之后就是找分子怎么求,规律:

     ((1/a1*a1)*n*n+(1/a2*a2)*n*n+(1/an*an)*n*n)/(n*n*n)

    a的取值从1到n

    代码:

    #include<stack>
    #include<queue>
    #include<map>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define fi first
    #define se second
    using namespace std;
    typedef long long ll;
    const int maxn=6e6+1;
    const int mod=998244353;
    ll dp[maxn];
    ll ksc(ll a, ll b)
    {
        ll ans = 0;
        while( b > 0 )
        {
            if( b&1 ) ans = (ans + a) % mod;
            a = ( a + a ) % mod;
            b >>= 1;
        }
        return ans;
    }
    ll ppow(ll a,ll b)
    {
        ll ans=1;
        while(b)
        {
            if(b&1) ans=(ans*a)%mod;
            a=(a*a)%mod;
            b>>=1;
        }
        return ans;
    }
    int main()
    {
        //printf("%d
    ",(15*ppow(8,mod-2))%mod);
        ll ans = 0;
        for (ll i = 1; i <= 6000001; i++)
        {
            ll x = ((i * i) % mod);
            ans = (ans + (ppow(x, mod - 2) % mod));
            dp[i] = (ans * 3) % mod;
        }
        ll t;
        scanf("%lld",&t);
        while(t--)
        {
            ll n;
            scanf("%lld",&n);
            printf("%lld
    ",(ksc(dp[n],ppow(n,mod-2)))%mod);
        }
        return 0;
    }
  • 相关阅读:
    solr 使用
    深入理解java虚拟机(二)HotSpot Java对象创建,内存布局以及访问方式
    深入理解java虚拟机(一)
    获取请求体数据 POST
    获取请求头数据
    Servlet之Request和Response 解析
    Servlet 之 Http协议
    Servlet 体系结构
    如何修改servlet的创建时机?
    Java Web servlet 详解
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/13441376.html
Copyright © 2020-2023  润新知