Submission #3058611


Source Code Expand

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

const int N=10005,P=998244353,G=3;
int n,e,m,f[N],rf[N];
char a[N],b[N];

int pw(int a,int x)
{
	int ans=1;
	for(;x;x>>=1,a=1ll*a*a%P)
		if(x&1)ans=1ll*ans*a%P;
	return ans;
}

void dft(int *a,int n,int inv)
{
	for(int i=0,j=0;i<n;i++)
	{
		if(i>j)swap(a[i],a[j]);
		for(int k=n>>1;(j^=k)<k;k>>=1);
	}
	for(int i=2;i<=n;i<<=1)
	{
		int m=i>>1,wn=pw(G,P-1+inv*(P-1)/i);
		for(int *p=a;p<a+n;p+=i)
			for(int j=0,w=1;j<m;j++,w=1ll*w*wn%P)
			{
				int t=1ll*w*p[m+j]%P;
				p[m+j]=(p[j]-t)%P;
				p[j]=(p[j]+t)%P;
			}
	}
	if(inv==-1)
		for(int i=0,t=pw(n,P-2);i<n;i++)a[i]=1ll*a[i]*t%P;
}

typedef vector<int> poly;
poly operator*(const poly&a,const poly&b)
{
	poly c;
	static int ta[N<<2],tb[N<<2];
	copy(a.begin(),a.end(),ta);
	copy(b.begin(),b.end(),tb);
	int l=1;
	for(;l<=m<<1;l<<=1);
	dft(ta,l,1),dft(tb,l,1);
	for(int i=0;i<l;i++)ta[i]=1ll*ta[i]*tb[i]%P;
	dft(ta,l,-1);
	for(int i=0;i<=m;i++)c.push_back(ta[i]);
	for(int i=0;i<l;i++)ta[i]=tb[i]=0;
	return c;
}
poly power(poly a,int n)
{
	poly ans(m+1);ans[0]=1;
	for(;n;n>>=1,a=a*a)
		if(n&1)ans=ans*a;
	return ans;
}

int main()
{
	scanf("%s%s",a+1,b+1);
	n=strlen(a+1);
	for(int i=1;i<=n;i++)
	{
		e+=a[i]=='1'&&b[i]=='0';
		m+=a[i]=='1'&&b[i]=='1';
	}
	for(int i=f[0]=1;i<=n;i++)f[i]=1ll*f[i-1]*i%P;
	rf[n]=pw(f[n],P-2);
	for(int i=n;i;i--)rf[i-1]=1ll*rf[i]*i%P;
	poly a;
	for(int i=0;i<=m;i++)
		a.push_back(rf[i+1]);
	a=power(a,e);
	int ans=0;
	for(int i=0;i<=m;i++)ans=(ans+a[i])%P;
	ans=1ll*ans*f[e]%P*f[m]%P*f[e+m]%P;
	printf("%d\n",(ans+P)%P);
	return 0;
}

Submission Info

Submission Time
Task E - Shuffle and Swap
User luogu_bot5
Language C++14 (GCC 5.4.1)
Score 1700
Code Size 1569 Byte
Status AC
Exec Time 105 ms
Memory 896 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:64:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s%s",a+1,b+1);
                       ^

Judge Result

Set Name Sample Partial All
Score / Max Score 0 / 0 1200 / 1200 500 / 500
Status
AC × 4
AC × 46
AC × 88
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
Partial sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_2_01.txt, subtask_2_02.txt, subtask_2_03.txt, subtask_2_04.txt, subtask_2_05.txt, subtask_2_06.txt, subtask_2_07.txt, subtask_2_08.txt, subtask_2_09.txt, subtask_2_10.txt, subtask_2_11.txt, subtask_2_12.txt, subtask_2_13.txt, subtask_2_14.txt, subtask_2_15.txt, subtask_2_16.txt, subtask_2_17.txt, subtask_2_18.txt, subtask_2_19.txt, subtask_2_20.txt, subtask_2_21.txt, subtask_2_22.txt, subtask_2_23.txt, subtask_2_24.txt, subtask_2_25.txt, subtask_2_26.txt, subtask_2_27.txt, subtask_2_28.txt, subtask_2_29.txt, subtask_2_30.txt, subtask_2_31.txt, subtask_2_32.txt, subtask_2_33.txt, subtask_2_34.txt, subtask_2_35.txt, subtask_2_36.txt, subtask_2_37.txt, subtask_2_38.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
sample_04.txt AC 1 ms 256 KB
subtask_1_01.txt AC 1 ms 256 KB
subtask_1_02.txt AC 1 ms 256 KB
subtask_1_03.txt AC 1 ms 256 KB
subtask_1_04.txt AC 1 ms 256 KB
subtask_1_05.txt AC 1 ms 256 KB
subtask_1_06.txt AC 1 ms 256 KB
subtask_1_07.txt AC 1 ms 256 KB
subtask_1_08.txt AC 1 ms 256 KB
subtask_1_09.txt AC 1 ms 256 KB
subtask_1_10.txt AC 1 ms 256 KB
subtask_1_11.txt AC 1 ms 256 KB
subtask_1_12.txt AC 1 ms 256 KB
subtask_1_13.txt AC 1 ms 256 KB
subtask_1_14.txt AC 1 ms 256 KB
subtask_1_15.txt AC 1 ms 256 KB
subtask_1_16.txt AC 2 ms 256 KB
subtask_1_17.txt AC 2 ms 256 KB
subtask_1_18.txt AC 2 ms 256 KB
subtask_1_19.txt AC 2 ms 256 KB
subtask_1_20.txt AC 2 ms 256 KB
subtask_1_21.txt AC 2 ms 256 KB
subtask_1_22.txt AC 2 ms 256 KB
subtask_1_23.txt AC 2 ms 256 KB
subtask_1_24.txt AC 1 ms 256 KB
subtask_1_25.txt AC 1 ms 256 KB
subtask_1_26.txt AC 1 ms 256 KB
subtask_1_27.txt AC 2 ms 256 KB
subtask_1_28.txt AC 2 ms 256 KB
subtask_1_29.txt AC 2 ms 256 KB
subtask_1_30.txt AC 3 ms 256 KB
subtask_1_31.txt AC 2 ms 256 KB
subtask_1_32.txt AC 3 ms 256 KB
subtask_1_33.txt AC 1 ms 256 KB
subtask_1_34.txt AC 1 ms 256 KB
subtask_1_35.txt AC 2 ms 256 KB
subtask_1_36.txt AC 2 ms 256 KB
subtask_1_37.txt AC 3 ms 256 KB
subtask_1_38.txt AC 3 ms 256 KB
subtask_1_39.txt AC 2 ms 256 KB
subtask_1_40.txt AC 2 ms 256 KB
subtask_1_41.txt AC 2 ms 256 KB
subtask_1_42.txt AC 2 ms 256 KB
subtask_2_01.txt AC 1 ms 384 KB
subtask_2_02.txt AC 1 ms 384 KB
subtask_2_03.txt AC 4 ms 384 KB
subtask_2_04.txt AC 19 ms 512 KB
subtask_2_05.txt AC 24 ms 512 KB
subtask_2_06.txt AC 1 ms 512 KB
subtask_2_07.txt AC 13 ms 896 KB
subtask_2_08.txt AC 18 ms 896 KB
subtask_2_09.txt AC 51 ms 896 KB
subtask_2_10.txt AC 40 ms 640 KB
subtask_2_11.txt AC 47 ms 640 KB
subtask_2_12.txt AC 42 ms 640 KB
subtask_2_13.txt AC 45 ms 640 KB
subtask_2_14.txt AC 52 ms 640 KB
subtask_2_15.txt AC 47 ms 640 KB
subtask_2_16.txt AC 22 ms 512 KB
subtask_2_17.txt AC 26 ms 512 KB
subtask_2_18.txt AC 21 ms 512 KB
subtask_2_19.txt AC 1 ms 384 KB
subtask_2_20.txt AC 1 ms 384 KB
subtask_2_21.txt AC 1 ms 384 KB
subtask_2_22.txt AC 94 ms 896 KB
subtask_2_23.txt AC 100 ms 896 KB
subtask_2_24.txt AC 62 ms 896 KB
subtask_2_25.txt AC 67 ms 896 KB
subtask_2_26.txt AC 105 ms 896 KB
subtask_2_27.txt AC 99 ms 896 KB
subtask_2_28.txt AC 2 ms 384 KB
subtask_2_29.txt AC 2 ms 384 KB
subtask_2_30.txt AC 12 ms 384 KB
subtask_2_31.txt AC 23 ms 512 KB
subtask_2_32.txt AC 21 ms 512 KB
subtask_2_33.txt AC 45 ms 640 KB
subtask_2_34.txt AC 50 ms 640 KB
subtask_2_35.txt AC 40 ms 640 KB
subtask_2_36.txt AC 37 ms 640 KB
subtask_2_37.txt AC 78 ms 896 KB
subtask_2_38.txt AC 89 ms 896 KB