small test on 5.30 night T1

 

 

    数学题使劲推就对了。

    让我们设  g(x) = ∑ C(i,x) * b^i ,然后后面验算了一张纸QWQ,懒得再打一遍了,回家我就把这张演算纸补上QWQ,先上代码。

 

#include<cstdio>
#define ll long long
using namespace std;
const int maxn=500005,ha=998244353;
inline int add(int x,int y){ x+=y; return x>=ha?x-ha:x;}
inline void ADD(int &x,int y){ x+=y; if(x>=ha) x-=ha;}
inline int ksm(int x,int y){
	int an=1;
	for(;y;y>>=1,x=x*(ll)x%ha) if(y&1) an=an*(ll)x%ha;
	return an;
}

int b,k,ans,inv[maxn],mul,ni;
ll n;

int main(){
	freopen("diyiti.in","r",stdin);
	freopen("diyiti.out","w",stdout);
	
	scanf("%lld%d%d",&n,&b,&k),n++;
	
	inv[1]=1;
	for(int i=2;i<=k;i++) inv[i]=ha-inv[ha%i]*(ll)(ha/i)%ha;
	
	mul=ksm(b,n%(ha-1)),ni=ksm(b-1,ha-2);
	ans=add(add(mul,ha-1)*(ll)ni%ha,ha-1);
	
	n%=ha;
	for(int i=1,now=mul;i<=k;i++){
		now=now*n%ha*(ll)inv[i]%ha,n=add(n,ha-1);
		ans=add(now,add(ha-b*(ll)ans%ha,ha-(i==1?b:0)));
		ans=ans*(ll)ni%ha;
	}
	
	printf("%d\n",ans);
	return 0;
}

  

posted @ 2018-05-30 20:37  蒟蒻JHY  阅读(136)  评论(0编辑  收藏  举报