ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CF997C Sky Full of Stars

2021-08-05 22:03:34  阅读:221  来源: 互联网

标签:Full sum Sky CF997C right choose aligned ll mod


CF997C Sky Full of Stars

首先进行容斥,用行中存在同色加列中存在同色减去行列均有同色的方案数

则为:

\[\begin{aligned}\left(2\sum_{i=1}^n(-1)^{i-1}3^{i+n(n-i)}{n\choose i}\right)+\left(\sum_{i=1}^n\sum_{j=1}^n(-1)^{i+j}3^{(n-i)(n-j)+1}{n\choose i}{n\choose j} \right)\end{aligned} \]

前面的直接枚举计算,考虑化简后面的

\[\begin{aligned}&\sum_{i=1}^n\sum_{j=1}^n(-1)^{i+j}3^{(n-i)(n-j)+1}{n\choose i}{n\choose j}\\=&3\sum_{i=0}^{n-1}(-1)^i{n\choose i}\sum_{j=0}^{n-1}(-1)^j3^{ij}{n\choose j}\\=&3\sum_{i=0}^{n-1}(-1)^i{n\choose i}\left((1-3^i)^j-(-1)^n3^{ni}\right)\end{aligned} \]

直接计算即可

时间复杂度\(O(n)/O(n\log n)\)

#include<bits/stdc++.h>
using namespace std;
# define ll long long
# define read read1<ll>()
# define Type template<typename T>
Type T read1(){
	T t=0;
	char k;
	bool vis=0;
	do (k=getchar())=='-'&&(vis=1);while('0'>k||k>'9');
	while('0'<=k&&k<='9')t=(t<<3)+(t<<1)+(k^'0'),k=getchar();
	return vis?-t:t;
}
# define fre(k) freopen(k".in","r",stdin);freopen(k".out","w",stdout)
# define ll long long
# define mod 998244353
ll ans,n,fac[1000005],inv[1000005];
void init(const int N=1000000){
	fac[0]=fac[1]=inv[0]=inv[1]=1;
	for(int i=2;i<=N;++i)fac[i]=fac[i-1]*i%mod,inv[i]=(mod-mod/i)*inv[mod%i]%mod;
	for(int i=2;i<=N;++i)inv[i]=inv[i-1]*inv[i]%mod;
}
ll C(int x,int y){return x<y||y<0?0:fac[x]*inv[y]%mod*inv[x-y]%mod;}
ll P3(ll x){
	if(!x)return 1;
	ll v=P3(x>>1);
	v=v*v%mod;
	if(x&1)v=v*3%mod;
	return v;
}
ll qkpow(ll n,ll m){
	ll t=1;
	for(;m;m>>=1,n=n*n%mod)
		if(m&1)t=t*n%mod;
	return t;
}
int main(){init();
	n=read;
	for(int i=1;i<=n;++i)
		if(i&1)ans=(ans+C(n,i)*P3(i)%mod*P3((n-i)*n))%mod;
		else ans=(ans-C(n,i)*P3(i)%mod*P3((n-i)*n))%mod;
	ans=ans*2%mod;
	ll t=0;
	for(int i=0;i<n;++i)
		t=(t+(i&1?1:-1)*C(n,i)*(qkpow(1-P3(i),n)-qkpow(-P3(i),n)))%mod;
	cout<<((ans+t*3)%mod+mod)%mod;
	return 0;
}

标签:Full,sum,Sky,CF997C,right,choose,aligned,ll,mod
来源: https://www.cnblogs.com/SYDevil/p/15106220.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有