zoukankan      html  css  js  c++  java
  • p5437 【XR-2】约定

    分析

    https://www.cnblogs.com/cjyyb/p/11111404.html

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N = 1e7;
    const int mod = 998244353;
    int fac[N+20],inv[N+20],pre[N+20],y[N+20],K,ik[N+20],Ans,sur[N+20];
    inline int pw(int x,int p){
        int res=1;
        while(p){
          if(p&1)res=res*x%mod;
          x=x*x%mod;p>>=1;
        }
        return res;
    }
    inline int work(){
        int i,j,k,res=0,wh=((K+1)&1)?mod-1:1;
        for(i=1;i<=K;i++,wh=mod-wh){
          int t=y[i];t=t*wh%mod;
          t=t*inv[i-1]%mod*inv[K-i]%mod;
          t=t*pre[i-1]%mod*sur[i+1]%mod;
          res=(res+t+mod)%mod;
        }
        return res;
    }
    signed main(){
        int i,j,k,n;
        scanf("%lld%lld",&n,&K);
        K+=3;fac[0]=pre[0]=sur[K+1]=1;
        for(i=1;i<=K;i++)fac[i]=fac[i-1]*i%mod;
        inv[K]=pw(fac[K],mod-2);
        for(i=K-1;i>=0;i--)inv[i]=inv[i+1]*(i+1)%mod;
        for(i=1;i<=K;i++)ik[i]=pw(i,K-3);
        for(i=1;i<=K;i++)pre[i]=pre[i-1]*(n-i+mod)%mod;
        for(i=K;i>=0;i--)sur[i]=sur[i+1]*(n-i+mod)%mod;
        for(i=1;i<=K;i++)y[i]=(y[i-1]+(i-1)*ik[i]%mod)%mod;
        Ans=(Ans+work())%mod;
        for(i=1;i<=K;i++)y[i]=(y[i-1]+ik[2]*ik[i]%mod)%mod;
        Ans=(Ans+mod-work())%mod;
        for(i=1;i<=K;i++)y[i]=(y[i-1]+(n+n-i+1)%mod*ik[i]%mod)%mod;
        Ans=(Ans+mod-work())%mod;
        for(i=1;i<=K;i++)pre[i]=pre[i-1]*(n+n-i+mod)%mod;
        for(i=K;i>=0;i--)sur[i]=sur[i+1]*(n+n-i+mod)%mod;
        Ans=(Ans+work())%mod;
        Ans=Ans*pw(n,mod-2)%mod;printf("%lld
    ",(Ans+mod)%mod);
        return 0;
    }
  • 相关阅读:
    第一周例行报告
    内置函数_map、filter
    时间戳
    模块_pip、os模块
    常用内置函数
    函数递归、列表推导式
    Python基础(六)_全局变量声明、可变参数、关键字参数
    Python基础(五) 函数
    python基础(四)集合
    Python基础(三)文件操作
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/11669404.html
Copyright © 2011-2022 走看看