Submission #31265087


Source Code Expand

// Author: wlzhouzhuan
#include<bits/stdc++.h>
using namespace std;

#define rep(i,l,r) for(int i=(l);i<=(r);i++)
#define per(i,l,r) for(int i=(l);i>=(r);i--)

const int N=250005;
const int mod=998244353;

inline int qpow(int a,int b=mod-2){
	int res=1;
	while(b>0){
		if(b&1)res=1ll*res*a%mod;
		a=1ll*a*a%mod,b>>=1;
	}
	return res;
}

const int inv2=qpow(2);
const int inv4=qpow(4);

int f[N],g[N],h[N];
int n,m;

int two[N];
int pw[N],ipw[N],fac[N],ifac[N];
void init(int n){
	two[0]=1;rep(i,1,n)two[i]=2*two[i-1]%mod;
	rep(i,0,n)pw[i]=(mod+1-two[i])%mod;
	rep(i,0,n)ipw[i]=qpow(pw[i]);
	fac[0]=1;rep(i,1,n)fac[i]=1ll*fac[i-1]*pw[i]%mod;
	ifac[n]=qpow(fac[n]);per(i,n,1)ifac[i-1]=1ll*ifac[i]*pw[i]%mod;
}
inline int C(int n,int m){
	return 1ll*fac[n]*ifac[m]%mod*ifac[n-m]%mod;
}
inline int sqr(int x){return 1ll*x*x%mod;}

int main(){
	cin>>n>>m,init(N-1);
	g[0]=1;
	rep(i,1,m)g[i]=1ll*g[i-1]*(two[i-1]-two[m]+mod)%mod*ipw[i]%mod;
	// rep(i,0,m)printf("g[%d]=%d\n",i,g[i]);
	rep(i,0,m-1)f[0]=(f[0]+sqr(two[i]))%mod;
	rep(i,1,min(n,m)){
		int coef=(1ll*two[i+1]*f[i-1]%mod+mod-1ll*sqr(two[m])*g[i]%mod)%mod;
		f[i]=1ll*coef*ipw[i+2]%mod;
	}
	// rep(i,0,m)printf("f[%d]=%d\n",i,f[i]);
	h[0]=1;
	rep(i,1,min(n,m)){
		h[i]=1ll*h[i-1]*(mod+1-two[n-i+1])%mod*ipw[i]%mod;
		// printf("h[%d]=%d\n",i,h[i]);
	}
	int ans=0,tot=two[m],FAC=1;
	rep(i,1,min(n,m)){
		FAC=1ll*FAC*i%mod;
		int coef=0;
		coef=(coef+2ll*f[i-1])%mod;
		coef=(coef+mod-g[i])%mod;
		coef=(coef+1ll*(tot-1)*g[i]%mod+mod-1ll*(i+1)*g[i+1]%mod)%mod;
		// int ex=(1ll*(i-1)*i/2+1)%(mod-1);
		// ans=(ans+1ll*h[i]*coef%mod*FAC%mod*qpow(inv2,ex))%mod;
		ans=(ans+1ll*h[i]*coef%mod*inv2%mod*fac[i]%mod*(i&1?mod-1:1))%mod;
		// printf("coef=%d\n",1ll*h[i]*coef%mod*qpow(inv2,ex)%mod);
		// printf("ans=%d\n",ans);
	}
	cout<<ans<<'\n';
	return 0;
}

Submission Info

Submission Time
Task F - Many Xor Optimization Problems
User Alan233
Language C++ (GCC 9.2.1)
Score 1000
Code Size 1875 Byte
Status AC
Exec Time 58 ms
Memory 11332 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1000 / 1000
Status
AC × 3
AC × 17
Set Name Test Cases
Sample example_00.txt, example_01.txt, example_02.txt
All example_00.txt, example_01.txt, example_02.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt
Case Name Status Exec Time Memory
example_00.txt AC 47 ms 8496 KiB
example_01.txt AC 41 ms 8260 KiB
example_02.txt AC 46 ms 8352 KiB
test_00.txt AC 41 ms 8584 KiB
test_01.txt AC 45 ms 9820 KiB
test_02.txt AC 47 ms 9124 KiB
test_03.txt AC 48 ms 9436 KiB
test_04.txt AC 45 ms 8712 KiB
test_05.txt AC 57 ms 11332 KiB
test_06.txt AC 58 ms 11160 KiB
test_07.txt AC 56 ms 11332 KiB
test_08.txt AC 53 ms 11188 KiB
test_09.txt AC 55 ms 11148 KiB
test_10.txt AC 58 ms 11312 KiB
test_11.txt AC 45 ms 8324 KiB
test_12.txt AC 45 ms 9292 KiB
test_13.txt AC 43 ms 8412 KiB