社区讨论

高精函数

学术版参与者 4已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mezo97t3
此快照首次捕获于
2025/08/31 20:33
6 个月前
此快照最后确认于
2025/11/03 23:38
4 个月前
查看原帖
CPP
#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,函数外不用定义变量,只要定义常量)?必关。
CPP
/*
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;
}
*/

回复

6 条回复,欢迎继续交流。

正在加载回复...