zoukankan      html  css  js  c++  java
  • P5591 小猪佩奇学数学

    P5591 小猪佩奇学数学

    [sum_{i=0}^{n}inom{n}{i}p^ilfloordfrac{i}{k} floor\ =sum_{i=0}^{n}inom{n}{i}p^idfrac{i-i\%k}{k}\ =dfrac{1}{k}sum_{i=0}^{n}inom{n}{i}p^i(i-i\%k)\ =dfrac{1}{k}sum_{i=0}^{n}inom{n}{i}p^ii-dfrac{1}{k}sum_{j=0}^{k-1}jsum_{i=0}^{n}[imod k=j]inom{n}{i}p^i ]

    (dfrac{1}{k}) 暂且略去。

    先看前面,看着很小清新。

    [sum_{i=0}^{n}inom{n}{i}p^ii\ =nsum_{i=0}^{n}dfrac{i}{n}inom{n}{i}p^i\ =nsum_{i=0}^{n}inom{n-1}{i-1}p^i\ =npsum_{i=0}^{n-1}inom{n-1}{i}p^i\ =np(p+1)^{n-1} ]

    再看后面

    [sum_{j=0}^{k-1}jsum_{i=0}^{n}[imod k=j]inom{n}{i}p^i\ =dfrac{1}{k}sum_{j=0}^{k-1}jsum_{i=0}^{n}sum_{t=0}^{k-1}omega_{k}^{t(i-j)}inom{n}{i}p^i\ =dfrac{1}{k}sum_{t=0}^{k-1}sum_{j=0}^{k-1}jomega_{k}^{-tj}sum_{i=0}^{n}inom{n}{i}p^iomega_{k}^{ti}\ =dfrac{1}{k}sum_{t=0}^{k-1}sum_{j=0}^{k-1}jomega_{k}^{-tj}(pomega_{k}^{t}+1)^n\ =dfrac{1}{k}sum_{t=0}^{k-1}(pomega_{k}^{t}+1)^nsum_{j=0}^{k-1}jomega_{k}^{-tj}\ ]

    后面那个 (omega) 是个等差乘等比的形式,习惯性单独拉出来推。

    [S=sum_{j=0}^{k-1}j(omega_{k}^{-t})^j\ omega_{k}^{-t}S=sum_{j=1}^{k}(j-1)(omega_{k}^{-t})^j\ (1-omega_{k}^{-t})S=sum_{j=0}^{k-1}(omega_{k}^{-t})^j-(k-1)omega_{k}^{-tk}-1\ =[k|t]k-(k-1)-1=-k\ S=dfrac{k}{omega_{k}^{-t}-1} ]

    哼哼,啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,一个细节调死人了。这个并不完全是等比数列,开头有 (0) ,我大E了,没有闪,被偷袭了。这个就是第三步 (-1) 的原因。

    还要特判 (t=0)

    #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;}
    int n,p,k,w[1<<20],ans;
    signed main(){
    	n=read(),p=read(),k=read();
    	w[0]=1,w[1]=qpow(3,(mod-1)/k);
    	for(int i=2;i<k;++i)w[i]=1ll*w[i-1]*w[1]%mod;
    	ans=1ll*n*p%mod*qpow(p+1,n-1)%mod;
    	int res=0;
    	for(int i=0;i<k;++i){
    		int x=qpow(1ll*p*w[i]%mod+1,n),y=0;
    		if(i)y=1ll*k*qpow(w[k-i]-1,mod-2)%mod;
    		else y=1ll*k*(k-1)/2%mod;
    		res=(res+1ll*x*y%mod)%mod;
    	}
    	res=1ll*res*qpow(k,mod-2)%mod,ans=(ans+mod-res)%mod;
    	ans=1ll*ans*qpow(k,mod-2)%mod;
    	cout<<ans<<'
    ';
    }
    
    
    路漫漫其修远兮,吾将上下而求索
  • 相关阅读:
    初学c课程笔记整理7-->>二维数组、字符串、指针
    初学c课程笔记整理6-->>数组
    ipad上自定义view的旋转适配
    苹果mac电脑中brew的安装使用及卸载详细教程
    Apple、Google、Microsoft的用户体验设计原则
    iOS图片拉伸技巧
    子网掩码解析【转载】
    Ios8,Xcode6下 设置Launch Image 启动图片
    ios8 设置单元格分割线无效
    简述UIScrollView的属性和用法
  • 原文地址:https://www.cnblogs.com/zzctommy/p/14334941.html
Copyright © 2011-2022 走看看