高精函数
  • 板块学术版
  • 楼主geyinfan
  • 当前回复5
  • 已保存回复5
  • 发布时间2025/8/31 20:31
  • 上次更新2025/9/1 00:07:12
查看原帖
高精函数
1667100
geyinfan楼主2025/8/31 20:31
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
string al,bl;
int lena,lenb,lenc,x,a[N],b[N],c[N];
int main(){
	cin>>al>>bl;
	lena=al.size();
	lenb=bl.size();
	for(int i=0;i<=lena-1;i++) a[lena-i]=al[i]-'0';
	for(int i=0;i<=lenb-1;i++) b[lenb-i]=bl[i]-'0';
	lenc=1;
	while(lenc<=lena||lenc<=lenb){
		c[lenc]=a[lenc]+b[lenc]+x;
		x=c[lenc]/10;
		c[lenc]%=10;
		lenc++;
	}
	c[lenc]=x;
	while(c[lenc]==0&&lenc>1) lenc--;
	for(int i=lenc;i>=1;i--) cout<<c[i];
	return 0;
}

此乃本蒟蒻高精加代码,能不能帮我变成像下面的函数(输入两个string,返回一个string,函数外不用定义变量,只要定义常量)?必关。

/*
const int N=1e4+10;
string cheng(string al,string bl){
	int a[N],b[N],c[N<<1],lena,lenb,lenc,x;
	for(int i=0;i<N;i++){
		a[i]=b[i]=0;
	}
	a[0]=b[0]=1;
	for(int i=0;i<(N<<1);i++) c[i]=0;
	string cl;
	lena=al.size();
	lenb=bl.size();
	for(int i=0;i<lena;i++) a[lena-i]=al[i]-'0';
	for(int i=0;i<lenb;i++) b[lenb-i]=bl[i]-'0';
	for(int i=1;i<=lena;i++){
		x=0;
		for(int j=1;j<=lenb;j++){
			c[i+j-1]+=a[i]*b[j]+x;
			x=c[i+j-1]/10;
			c[i+j-1]%=10;
		}
		c[lenb+i]=x;
	}
	lenc=lena+lenb;
	while(c[lenc]==0&&lenc>1) lenc--;
	for(int i=lenc;i>=1;i--) cl+=(char(c[i]+'0'));
	return cl;
}
*/
2025/8/31 20:31
加载中...