40points你干嘛~~(求助)
查看原帖
40points你干嘛~~(求助)
670584
Zhangikun楼主2022/11/4 22:44

实在查不出错了

#include<bits/stdc++.h>
#define unint unsigned
#define str string
using namespace std;

int box(char c)
{
	return c-'0';
}

str pls(str a,str b)
{
	a="0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"+a;
	b="0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"+b;
	str ans="";
	int ljq=0;//累加器 
	for(int i=a.size()-1;i>=0;i--)//从个位算起 
	{
		if(box(a[i])+box(b[i])+ljq>=10)
		{
			char c=(box(a[i])+box(b[i])+ljq)%10+'0';//得到这位 
			ljq=(box(a[i])+box(b[i])+ljq)/10;//进位 
			ans=c+ans;
		}
		else
		{
			char c=(box(a[i])+box(b[i])+ljq)%10+'0';//得到这位
			ljq=0;
			ans=c+ans;
		}
	}
	return ans;
}

signed main(void)
{
	str a,b;
	cin>>a>>b;
	if(a.size()>b.size())/*
	A:100
	B:10				 */
	{
		for(int i=1;i<=a.size()-b.size();i++)
		{
			b="0"+b;
		}
	}
	if(a.size()<b.size())/*
	A:10
	B:100				 */
	{
		for(int i=1;i<=b.size()-a.size();i++)
		{
			a="0"+a;
		}
	}
	str ans=pls(a,b);
	int flag=0;
	if(ans=="0")
	{
		cout<<0;return 0;
	}
	for(int i=0;i<ans.size();i++)
	{
		if(flag==0)
			if(ans[i]!='0')
				flag=1;
		if(flag==1)
		{
			cout<<ans[i];
		} 
	}
	return 0;
}
2022/11/4 22:44
加载中...