关于高精加
  • 板块学术版
  • 楼主ltmshumiao
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/10 20:37
  • 上次更新2024/9/10 20:38:13
查看原帖
关于高精加
1383031
ltmshumiao楼主2024/9/10 20:37

在我问了3次之后,把高精加的主体代码写出来了。
但是前导零不会去······

#include<bits/stdc++.h>
//#define bug
using namespace std;
int main()
{
	string a,b;
	cin>>a;
	cin>>b;
	int lena=a.size(),lenb=b.size();
#ifdef bug
	printf("%s %d\n%s %d\n",a.c_str(),lena,b.c_str(),lenb);
#endif
	string stra="",strb="",strc="";
	int len=max(lena,lenb);
	
	if(lena<lenb)
        for(int i=1;i<=lenb-lena;i++)
           a="0"+a;
    else
        for(int i=1;i<=lena-lenb;i++)
           b="0"+b;
	for(int i=len-1;i>=0;i--)
		stra+=a[i];
	for(int i=len-1;i>=0;i--)
		strb+=b[i];
#ifdef bug
	printf("%s\n%s\n",stra.c_str(),strb.c_str());
#endif
    int x=0;
    for(int i=0;i<len;i++)
    {
        int t=stra[i]-'0'+strb[i]-'0'+x;
        x=t/10;
        t%=10;
        strc=char(t+'0')+strc;
    }
    if(x!=0)
		strc=char(x+'0')+strc;
#ifdef bug
	printf("%s\n",strc.c_str());
#endif
	int ans=-1;
	while(len>1 && strc[++ans]=='0')
	{
		strc.erase(0,1);
#ifdef bug
		printf("%s\n",strc.c_str());
#endif
	}
	printf("%s",strc.c_str());
	
	return 0;
}
2024/9/10 20:37
加载中...