TLE 30pts求助
查看原帖
TLE 30pts求助
812227
Sunrise_beforeglow楼主2024/6/21 16:59
#include <bits/stdc++.h>
using namespace std;
string cheng(string a,int b)
{
	int x[500005]={},z[500005]={};
	for(int i=a.size()-1,j=1;i>=0;i--,j++)x[j]=a[i]-'0';
	int len=a.size();
	for(int i=1;i<=len;i++)
	{
		z[i]+=x[i]*b;
		z[i+1]+=z[i]/10;
		z[i]%=10;
	}
	while(z[len+1]>0)
	{
	    len++;
	    z[len+1]+=z[len]/10;
	    z[len]%=10;
	}
	string c="";
	for(int i=len;i>=1;i--)c=c+char(z[i]+'0');
	return c; 
}
string jia(string a,string b)
{
	int x[500005]={},y[500005]={},z[500005]={};
	for(int i=a.size()-1,j=1;i>=0;i--,j++)x[j]=a[i]-'0';
	for(int i=b.size()-1,j=1;i>=0;i--,j++)y[j]=b[i]-'0';
	int len=max(a.size(),b.size());
	for(int i=1;i<=len;i++)
	{
		z[i]+=x[i]+y[i];
		z[i+1]+=z[i]/10;
		z[i]%=10;
	}
	if(z[len+1]>0)len++;
	string c="";
	for(int i=len;i>=1;i--)c=c+char(z[i]+'0');
	return c; 
}
string mul="1";
string ans="1";
void A(int n,int m)
{
	for(int i=n;i>=n-m+1;i--)
	{
		mul=cheng(mul,i);
	}
}
void B(int n,int m)
{
	for(int i=n;i>=n-m+1;i--)
	{
		ans=cheng(ans,i);
	}
}
int n,m;
int main()
{
	cin>>n>>m;
	A(n+1,2);//老师中间有男生
	A(n+3,m);
	A(n,n);
	B(n+1,n+1);//老师中间一个女生
	ans=cheng(ans,2*m);
	B(n+2,m-1);
	cout<<jia(mul,ans);
	return 0;
}

大佬 orz

2024/6/21 16:59
加载中...