求助关于两个代码
  • 板块学术版
  • 楼主xiaoyang111
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/9/22 22:52
  • 上次更新2024/9/23 13:38:41
查看原帖
求助关于两个代码
890311
xiaoyang111楼主2024/9/22 22:52

代码一:

signed main(){
	int a,b,k,ans,p;
	while (~scanf("%lld",&a)){
		k=9;
		p=qpow(10,k,INF);
		ans=0;
		ans+=qpow(2,a+b-1,p);
		if ((a+b)%2==0) ans+=C(a+b,(a+b)/2,p)/2%p;
		printf("%0*lld\n",k,ans);
	}
	return 0;
}

代码二:

signed main(){
	int a,b,k,ans,p;
	while (~scanf("%lld",&a)){
		k=9;
		p=qpow(10,k,INF);
		init(p);
		ans=0;
		for (int i=(a+b+1)/2;i<=a+b;++i){
			ans=(ans+C(a+b,i,p))%p;
		}
		printf("%0*lld\n",k,ans);
	}
	return 0;
}

这个题孩子调了一周了qaq这两个代码片段输出是否一样?C里面部分都是用的是递推:

int c[400][400];
int C(int n,int m,int p){
	for (int i=1;i<=n;++i){
		for (int j=1;j<=m;++j){
			c[i][j]=0;
		}
	}
	for (int i=0;i<=n;++i){
		c[i][0]=c[i][i]=1;
		for (int j=1;j<i;++j){
			c[i][j]=c[i-1][j-1]+c[i-1][j];
			c[i][j]%=p;
		}
	}
	return c[n][m];
}
2024/9/22 22:52
加载中...