最后两个点TIE,蒟蒻求助
查看原帖
最后两个点TIE,蒟蒻求助
703085
Myosotis_alpestris楼主2022/4/3 10:56

RT,感觉写的很怪

开O2之后最后两个点不是TIE而是RE

而且第一个点也会WA

可能是因为第一个点用的特判

蹲一个大佬帮调

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string a,b;
	int c1[100],c2[100],c3[100]={0};
	int len1,len2,lenc;
	cin>>a>>b;
	len1=a.length();
	len2=b.length();
	if((len1==1&&c1[0]==0)||(len2==1&c2[0]==0))//因为会产生大量的前导0,所以当单个乘数是0的时候须特判 
	{
		cout<<"0"<<endl;
		return 0;
	}
	if (len1<len2)//补0,如果没有这一项第五个点会RE 
	{
		for(int i=1;i<=len2-len1;i++)
		{
			a="0"+a;
		}
	}
	else
	{
		for(int i=1;i<=len1-len2;i++)
		{
			b="0"+b;
		}
	}
	len1=a.length();
	len2=b.length();
	for(int x=0;x<=len1-1;x++)//将字符串转为数组 
	{
		c1[len1-x]=a[x]-'0';
	}
	for(int y=0;y<=len2-1;y++)
	{
		c2[len2-y]=b[y]-'0';
	}
	int qaq=1;
	int awa=2;
	for(int i=1;i<=len2;i++)
	{
		for (int j=1;j<=len2;j++)
		{
			int x=c1[j]*c2[i];
			if(c3[qaq]==0)//如果这一位是0,那它的位数+1 
			{
				lenc++;
			}
			c3[qaq]+=x;
			if(c3[qaq]>=10)//将>=10的部分移到上一位 
			{
				if(c3[qaq+1]==0)
				{
					lenc++;
				}
				c3[qaq+1]+=c3[qaq]/10;
				c3[qaq]%=10;
			}
			qaq++;
		}
		qaq=awa;//awa代表前移的位数 
		awa++;
	}
	while(c3[lenc]==0)//去掉多余的前导0 
	{
		lenc--;
	}
	for (int i=lenc;i>0;i--)
	{
		cout<<c3[i];
	}
}
2022/4/3 10:56
加载中...