洛谷_P1303 A*B Problem_高精度计算

洛谷_P1303 A*B Problem_高精度计算

//
#include<bits/stdc++.h>
using namespace std;
#define mem( a,v ) memset( a,v,sizeof( a ) )

const int N=11111;		                    // RE

int main()
{
	char a[N],b[N];
	int ans[N];
	int len,i,j;

	mem( a,0 ); mem( b,0 ); mem( ans,0 );   // init

	cin>>a>>b;
	len=strlen(a)>strlen(b)?strlen(a):strlen(b);

	reverse( a,a+strlen(a) );
	reverse( b,b+strlen(b) );
	for( i=0;a[i];i++ ) a[i]-='0';
	for( i=0;b[i];i++ ) b[i]-='0';

	for( i=0;i<len;i++ )
		for( j=0;j<len;j++ )
			ans[i+j]+=a[i]*b[j];            // 模拟手算
	
	for( i=0;i<len*2+5;i++ )                // 进位
	{
		ans[i+1]+=ans[i]/10;
		ans[i]%=10;
	}
	for( i=len*2+5;i && ans[i]==0;i-- );
	for( ;~i;i-- ) cout<<ans[i];
	cout<<endl;

	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_63173957/article/details/125493205
ab
今日推荐