求高精度结构体封装
  • 板块学术版
  • 楼主zsuvion
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/9/21 10:49
  • 上次更新2023/11/4 05:59:20
查看原帖
求高精度结构体封装
487168
zsuvion楼主2021/9/21 10:49
#include<iostream>
#include<algorithm>
using namespace std;

#define maxn 100
struct Bigint{
	int len, a[maxn];
	Bigint(int x=0){
		a[maxn]={0};
		for(len=1; x; len++){
			a[len]=x%10;
			x/=10;
		}
		len--;
	}
	int &operator[](int i){
		return a[i];
	}
	void flatten(int L){
		len=L;
		for(int i=1; i<=len; i++){
			a[i+1]+=a[i]/10;
			a[i]%=10;
		}
		for(; !a[len]; ){
			len--;
		}
	}
	void print(){
		for(int i=max(len, 1); i>=1; i--){
			cout<<a[i];
		}
	}
};

Bigint operator+(Bigint a, Bigint b){
	Bigint c;
	int len=max(a.len, b.len);
	for(int i=1; i<=len; i++){
		c[i]+=a[i]+b[i];
	}
	c.flatten(len+11);
	return c;
}

Bigint operator*(Bigint a, int b){
	Bigint c;
	int alen=a.len;
	for(int i=1; i<alen; i++){
		c[i]=a[i]*b;
	}
	c.flatten(alen+11);
	return c;
}

大佬们看一下,哪里错了???

2021/9/21 10:49
加载中...