序列 做题记录

k=0 时,所有的数奇偶性都一样,所以答案为 n!
否则有 n2 个数是一个奇偶性的,另外 n2 个数是另一个奇偶性的。如果 n2=n2,那么两种数可以交换,答案为 2x!y!,否则为 x!y!

点击查看代码
void work() {
	in2(n,k);
	inn(a,n);
	For(i,1,n) a[i]&=1;
	int x=0;
	For(i,1,n) if(a[i]) x++;
	int y=n-x;
	if(k==0) {
		bool flg=1;
		For(i,1,n-1) if(a[i]!=a[i+1]) {
			cout<<0;
			flg=0;
			break;
		}
		if(flg) cout<<fac[n];
	}
	else {
		int X=(n+1)/2,Y=n/2;
		if(x<y) swap(x,y);
		if(x!=X||y!=Y) cout<<0;
		else if(X==Y) cout<<2*fac[x]*fac[y]%mod;
		else cout<<fac[x]*fac[y]%mod;	
	}

	puts("");
}
posted @   coding_goat_qwq  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示