文章目录
前言
将高精的+,-,*,/都用结构体封装了一遍
提示:以下是本篇文章正文内容,下面案例可供参考
一、封装高精的+,-,*,/
#include <bits/stdc++.h>
#define maxn 100 //定义数组
using namespace std;
struct Bigint{
//封装结构体
int len,a[maxn];//为了兼顾效率与代码复杂度,用len记录位数,a记录每个数位
Bigint(int x=0){
//通过初始化使得这个大整数能够表示整型x,默认为0
memset(a,0,sizeof(a));
for(len=1;x;len++){
//注意数组是从一开始的
a[len]=x%10;
x/=10;
}
len--;
}
int &operator[](int i){
return a[i];//重载[],可以直接用x[i]代表x.a[i],编写时更自然
}
void flatten(int L){
//‘展开’也可以理解为做进位处理,将超过10的数,进一位,减去10,并且重新设置len的值
len=L;
for(int i=1;i<=len;i++){
a[i+1]+=a[i]/10;
a[i]%=10;