关于热身赛T1
  • 板块灌水区
  • 楼主miaojintao
  • 当前回复22
  • 已保存回复22
  • 发布时间2022/1/30 11:10
  • 上次更新2023/10/28 10:04:13
查看原帖
关于热身赛T1
408859
miaojintao楼主2022/1/30 11:10

这题正解是杨辉三角吗,为什么我只有40pts,感觉没问题啊。

#include<iostream>
#include<algorithm>
using namespace std;

__int128 n,C[100002],p=998244353,ans=0;

inline __int128 qread(){
	__int128 x=0,f=1;
	char ch=getchar();
	while(ch<'0' || ch>'9'){
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch>='0' && ch<='9'){
		x=(x<<1)+(x<<3)+(ch^48);
		ch=getchar();
	}
	return x*f;
}

inline void qwrite(__int128 x){
	char ch[200];
	if(!x){
		putchar('0');return;
	}
	if(x<0){
		putchar('-');
		x=-x;
	}
	int cnt=0;
	while(x>0){
		ch[cnt++]=x%10+'0';
		x/=10;
	}
	while(cnt>0) putchar(ch[--cnt]);
} 

int main()
{
	C[0]=1;
	n=qread();
	if(n==1) ans=0;
	else if(n==2) ans=0;
	else {
		n-=2;
		for(int i=1;i<=n;++i){
			C[i]=C[i-1]*(n+1-i)/i;
		}
		for(int i=0;i<=n;++i){
			if(n%2==0 && i!=n/2) ans=ans+C[i];
			else if(n%2!=0)	ans=ans+C[i];	
		}
		ans=ans%p;
	}
	qwrite(ans);
	return 0;
}
2022/1/30 11:10
加载中...