各位大神能帮忙看看我这个该怎么改吗?
  • 板块P1303 A*B Problem
  • 楼主cszdls
  • 当前回复10
  • 已保存回复10
  • 发布时间2023/9/22 18:35
  • 上次更新2023/11/2 18:44:12
查看原帖
各位大神能帮忙看看我这个该怎么改吗?
969036
cszdls楼主2023/9/22 18:35
#include<bits/stdc++.h>
using namespace std;


const int MAXT=5000;
char s1[MAXT],s2[MAXT];
int a[MAXT]={0},b[MAXT]={0},c[MAXT]={0}; 


int  main()
{
	
	
	int len1,len2,lmax,x=0,n=0;
	scanf("%s%s",&s1,&s2);
	len1=strlen(s1);
	len2=strlen(s2);
	
	
	//倒放存入 
	for(int i=0;i<len1;i++)
	{
		a[i]=s1[len1-1-i]-'0';
	}
	for(int i=0;i<len2;i++)
	{
		b[i]=s2[len2-1-i]-'0';
	}
	
	
	//运算 
	for(int i=0;i<len1;i++)
	{
		for(int j=0;j<len2;j++)
		{
			n=a[i]*b[j]%10;
			c[i+j]+=n+x;
			x=a[i]*b[j]/10;
		}
	}
	c[len1+len2-1]=x;
	for(int i=0;i<len1;i++)
	{
		for(int j=0;j<len2;j++)
		{
			if(c[i+j]>=10)
			{
				n=c[i+j]%10;
				x=c[i+j]/10;
			 	c[i+j]=n;
			 	c[i+j+1]+=x;
			}
		}
	}
	if(c[len1+len2-1]>=10)
	{
		n=c[len1+len2-1]%10;
		c[len1+len2-1]=n+x;
		x=c[len1+len2-1]/10;
	}
	c[len1+len2]=x;
	lmax=len1+len2-1;


    //消零 
    for(int i=0;i<lmax;i--)
    {
	    if(c[lmax]==0 and lmax!=0)
	    {
	    	lmax--;
	    }
	    else
	    {
	    	break;
		}
	}


    //输出 
	for(int i=lmax;i>=0;i--)
	{
		cout<<c[i];
	}
	
	
	return 0;
}
2023/9/22 18:35
加载中...