求调(玄关)
查看原帖
求调(玄关)
1007282
hehaorui楼主2024/5/3 21:45

不知为何TLE

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll t,p;
const int N=5*1e6,mod=998244353;
ll fac[N],ifac[N];
ll ans;
ll read()
{
	char v;
	ll sum=0;
	while(v<'0'||v>'9')
		v=getchar();
	while(v>='0'&&v<='9')
		sum=sum*10+v-'0',v=getchar();
	return sum;
}
ll ksm(ll a,ll b)
{
	if(b==0)
		return 1%mod;
	ll c=ksm(a,b/2)%mod;
	c=(__int128)c*c%mod;
	if(b&1)
		c=(__int128)c*a%mod;
	return c;
}
int main()
{
	t=read();
	p=read();
	fac[0]=ifac[0]=1;
	for(int i=1;i<=p;i++)
	{
		fac[i]=fac[i-1]*i%mod;
		fac[i]%=mod;
		ifac[i]=ksm(fac[i],mod-2)%mod; 
//		cout<<"fac["<<i<<"]="<<fac[i]<<" ifac["<<i<<"]="<<ifac[i]<<endl; 
	}
	for(int i=1;i<=t;i++)
	{
		ll n,m;
		n=read(),m=read();
		ll sum=(__int128)((fac[n]*ifac[m])%mod)*ifac[n-m]%mod;
		ans=ans^sum;
//		cout<<sum<<endl;
	} 
	cout<<ans<<"\n";
	return 0;
}
2024/5/3 21:45
加载中...