全WA过样例求调
查看原帖
全WA过样例求调
942058
luobobei楼主2024/11/28 14:55
#include<bits/stdc++.h> 
using namespace std; 
int fx[101][100001]; 
int length[101]; 
int main() 
{
	
	int n,k;
	cin>>n>>k;
	string s;
	cin>>s;
	int di=0,zhi=0;
	int flag=0;
	for(int i=5;i<s.size();i++)
	{
		if(s[i]=='+')
		{
			if(di==0)
				fx[zhi][0]++;
			fx[zhi][0]+=di;
			flag=0;
			zhi=0;
			di=0;
		}
		else if('0'<=s[i]&&s[i]<='9')
		{
			if(flag==0)
			{
				di=di*10+s[i]-'0';
			}
			else
			{
				zhi=zhi*10+s[i]-'0';
			}
		}
		else if(s[i]=='x')
			flag=1;
	}
	if(di==0)
		fx[zhi][0]++;
	fx[zhi][0]+=di;
	flag=0;
	zhi=0;
	di=0;
	for(int i=n;i>=0;i--)
	{
		while(fx[i][0]!=0)
		{
			length[i]++;
			fx[i][length[i]]=fx[i][0]%10;
			fx[i][0]/=10;
		}
	}
	for(int i=1;i<=k;i++)
	{
		n--;
		for(int j=0;j<=n;j++)
		{
			for(int k=1;k<=length[j+1];k++)
			{
				fx[j][k]=fx[j+1][k]*(j+1);
			}
			for(int k=1;k<length[j+1];k++)
			{
				fx[j][k+1]+=fx[j][k]/10;
				fx[j][k]%=10;
			}
			length[j]=length[j+1];
			while(fx[j][length[j]]>=10)
			{
				fx[j][length[j]+1]+=fx[j][length[j]]/10;
				fx[j][length[j]]%=10;
				length[j]++;
			}
		}
	}
	int m;
	cin>>m;
	int x0;
	while(m--)
	{
		cin>>x0;
		int ans[100001]={0};
		int anslen=0;
		int mians[100001];
		for(int i=n;i>=0;i--)
		{
			memset(mians,0,sizeof(mians));
			for(int j=1;j<=length[i];j++)
				mians[j]=fx[i][j];
			int len=length[i];
			for(int j=1;j<=i;j++)
			{
				for(int k=1;k<=len;k++)
					mians[k]*=x0;
				for(int k=1;k<len;k++)
				{
					mians[k+1]+=mians[k]/10;
					mians[k]%=10;
				}
				while(mians[len]>=10)
				{
					len++;
					mians[len]=mians[len-1]/10;
					mians[len-1]%=10;
				}
			}
			anslen=max(anslen,len);
			for(int j=1;j<=anslen;j++)
				ans[j]+=mians[j];
			for(int j=1;j<anslen;j++)
			{
				ans[j+1]+=ans[j]/10;
				ans[j+1]%=10;
			}
			if(ans[anslen]>=10)
			{
				ans[anslen+1]=ans[anslen]/10;
				ans[anslen]%=10;
				anslen++;
			}
		}
		for(int i=anslen;i>=1;i--)
			cout<<ans[i];
		cout<<endl;
	}
	return 0;
}
2024/11/28 14:55
加载中...