60分求助
  • 板块P1303 A*B Problem
  • 楼主yang054
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/9/22 17:57
  • 上次更新2023/10/27 10:21:06
查看原帖
60分求助
765454
yang054楼主2022/9/22 17:57
#include<iostream>
using namespace std;
struct hugeint{
	int num[2005]={0};
	int len=0;
};
hugeint strtoint(string s){
	hugeint ans;
	for(int i=s.size()-1;i>=0;i--)
	{
		ans.num[++ans.len]=s[i]-'0';
	}
	return ans;
}
void printint(hugeint n){
	int f=n.len;
	while((n.num[f]==0)&&(f!=1))
	f--;
	for(int i=f;i>=1;i--)
	{
		cout<<n.num[i];
	}
	cout<<endl;
}
hugeint add(hugeint a,hugeint b){
	hugeint ans;
	
	ans.len=a.len+b.len-1;
	for(int j=1;j<=a.len;j++)
	for(int i=1;i<=b.len;i++)
	{
		ans.num[i+j-1]+=a.num[i]*b.num[j];
		ans.num[i+j]+=ans.num[i+j-1]/10;
		ans.num[i+j-1]=ans.num[i+j-1]%10;
	}
	if(ans.num[ans.len+1]>0)
	ans.len++;
	return ans;
}
int main()
{
	char a[2005],b[2005];
	cin>>a>>b;
	hugeint n1=strtoint(a);
	hugeint n2=strtoint(b);
	printint(add(n1,n2));
	return 0;
}
2022/9/22 17:57
加载中...