zoukankan      html  css  js  c++  java
  • LOJ #6485. LJJ 学二项式定理

    LOJ #6485. LJJ 学二项式定理

    单位根反演练手题。

    [sum_{i=0}^{n}inom{n}{i}s^ia_{imod 4}\ sum_{j=0}^{3}sum_{i=0}^{n}[imod 4=j]s^ia_jinom{n}{i}\ =sum_{j=0}^{3}sum_{i=0}^{n}dfrac{1}{4}sum_{k=0}^{3}omega_{4}^{ik}omega_{4}^{-jk}s^ia_jinom{n}{i}\ =dfrac{1}{4}sum_{j=0}^{3}sum_{k=0}^{3}omega_{4}^{-jk}a_jsum_{i=0}^{n}inom{n}{i}(omega_{4}^{k}s)^i\ =dfrac{1}{4}sum_{j=0}^{3}sum_{k=0}^{3}omega_{4}^{-jk}a_j(omega_{4}^{k}s+1)^{n}\ ]

    (mod 998244353) 意义下 (omega_{4}^{1})(g^{frac{mod-1}{4}}) (原根)有同样的性质,直接用后者就好了。

    #define mod 998244353
    inline int qpow(int n,int k){int res=1;for(;k;k>>=1,n=1ll*n*n%mod)if(k&1)res=1ll*n*res%mod;return res;}
    inline void fmod(int&x){x-=mod,x+=x>>31&mod;}
    const int iv4=qpow(4,mod-2);
    int s,a[4],w[4],ans;
    LL n;
    void Main(){
    	ans=0;
    	scanf("%lld%d%d%d%d%d",&n,&s,&a[0],&a[1],&a[2],&a[3]);
    	rep(j,0,3)rep(k,0,3){
    		int x=1ll*a[j]*w[(16-j*k)%4]%mod;
    		int y=qpow((1ll*w[k]*s+1)%mod,n%(mod-1));
    		fmod(ans+=1ll*x*y%mod);
    	}
    	ans=1ll*ans*iv4%mod;
    	printf("%d
    ",ans);
    }
    signed main(){
    	w[0]=1,w[1]=qpow(3,(mod-1)/4),w[2]=1ll*w[1]*w[1]%mod,w[3]=1ll*w[1]*w[2]%mod;
    	for(int T=read();T;--T)Main();
    }
    
    
    路漫漫其修远兮,吾将上下而求索
  • 相关阅读:
    Kafka Eagle安装
    CentOS下OpenJDK设置JAVA_HOME
    设计模式:解释器模式
    Typora主题推荐
    SpringMVC的<mvc:annotation-driven />
    SpringMVC的视图解析器
    数字化营销
    《计算广告》第二版思维导图
    舆情计算
    实时数仓
  • 原文地址:https://www.cnblogs.com/zzctommy/p/14333438.html
Copyright © 2011-2022 走看看