求助,救救孩子
查看原帖
求助,救救孩子
230804
Durancer楼主2021/3/7 19:00

样例都过了,但评测老是显示在二十行左右出现不对的数,查不出错来了,救救孩子/kk

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#define int long long 
using namespace std;
const int N=4e5+9;
const int mod=1004535809;
const int g[]={3,334845270};
int a[N],b[N];
int r[N];
int term=1,l;
int n,k,t;
//int inv[N];
int read()
{
	int f=1,x=0;
	char s=getchar();
	while(s<'0'||s>'9')
	{
		if(s=='-')
			f=-1;
		s=getchar();
	}
	while(s>='0'&&s<='9')
	{
		x=((x<<1)+(x<<3)+(s^'0'))%mod;
		s=getchar();
	}
	return f*x%mod;
}
int quick(int x,int p)
{
	int ret=1;
	while(p)
	{
		if(p&1) ret=ret*x%mod;
		x=x*x%mod;
		p>>=1;
	}
	return ret%mod;
}
void NTT(int *A,int type)
{
	for(int i=0;i<term;i++)
		if(i<r[i])
			swap(A[i],A[r[i]]);
	for(int mid=1;mid<term;mid<<=1)
	{
		int R=mid<<1;
		int Wn=quick(g[type],(mod-1)/R);
		for(int j=0;j<term;j+=R)
		{
			int w=1;
			for(int k=0;k<mid;k++,w=w*Wn%mod)
			{
				int x=A[j+k]%mod;
				int y=w*A[j+k+mid]%mod;
				A[j+k]=(x+y)%mod;
				A[j+k+mid]=(x-y+mod)%mod;
			}
		}	
	}
	if(type==1)
	{
		int inv=quick(term,mod-2);
		for(int i=0;i<term;i++)
			A[i]=A[i]*inv%mod; 
	}
	return;
}
void lowchar()
{
	b[0]=1;
//	inv[1]=1;
//	for(int i=2;i<=n;i++)
//		inv[i]=(mod-mod/i)*inv[mod%i]%mod;
	for(int i=1;i<=n;i++)
		b[i]=(-b[i-1]*(k-i+1+mod)*quick(i,mod-2)+mod)%mod;
	NTT(a,0);
	NTT(b,0);
	for(int i=0;i<term;i++)
		a[i]=a[i]*b[i]%mod;
	NTT(a,1);
	for(int i=1;i<=n;i++)
		printf("%lld ",a[i-1]);
}
void bigsum()
{
	b[0]=1;
//	inv[1]=1;
//	for(int i=2;i<=n;i++)
//		inv[i]=(mod-mod/i)*inv[mod%i]%mod;
	for(int i=1;i<=n;i++)
		b[i]=b[i-1]*(k+i-1)*quick(i,mod-2)%mod;
	NTT(a,0);
	NTT(b,0);
	for(int i=0;i<term;i++)
		a[i]=a[i]*b[i]%mod;
	NTT(a,1);
	for(int i=1;i<=n;i++)
		printf("%lld ",a[i-1]);
}
signed main()
{
	n=read();
	k=read();
	t=read();
	for(int i=1;i<=n;i++)
		a[i-1]=read();
	while(term<=2*n)
	{
		term<<=1;
		l++;
	}
	for(int i=0;i<term;i++)
		r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
	if(t==1) lowchar();
	else bigsum();
	return 0;
}
2021/3/7 19:00
加载中...