高精度運算

2021-09-13 01:32:33 字數 1436 閱讀 1842

高精度是指用陣列存放乙個大數,然後用用一些操作來模擬加減乘除的運算

加法版:

#include#define m 100005

#define lom long long

using namespace std;

int ans[m],len_a=1;

void puls(lom x)

while(temp!=0)//如果還需要進製

}//倒序

減法版:(x一定要比ans小)

#include#define m 100005

#define lom long long

using namespace std;

int ans[m]=,len_a=6;

void subt(lom x)//ans減去x存放到ans裡

else ans[i]-=(temp%10);

temp/=10;

} if(ans[len_a]==0) len_a=1;//防止全是零的情況

}

乘法版:

#include#define m 100005

#define lom long long

using namespace std;

int ans[m]=,len=1;

//定義存放答案的陣列,並使a[1]初始化為1,長度為ls

void muti(lom x)//將ans裡面的數乘以x存放在ans裡面

while(temp!=0)//把剩下的數放到最低位

//此時陣列是反著放的

}

除法版:

注意除數sum也必須是倒序的

#include#define m 100005

#define lom long long

using namespace std;

int ans[m],sum[m],len_a,len_s;

//定義存放答案的陣列,長度為ls

void divi(lom x)//將sum裡面的數除以x存放到ans裡面,向下取整

} while(ans[len_a]==0&&len_a!=1) len_a--;//去掉前導零

//此時ans是倒序的

}

大數相乘版:

#include#define m 100005

#define lom long long

using namespace std;

lom ans[m]=,k[m]=,c[m];

void muti(lom a,lom b)

}

for(int i=0;i<=c[0];i++) a[i]=c[i];

}

高精度運算

今天覆習了一下高精度運算。我覺得這種簡單的東西也得看一看,至少給自己留點兒低!高精度可以壓位的,但我今年懶得寫了 首先是加減法很簡單了,沒什麼值得特別強調的。高精度減法時別忘了,a時做下交換在計算,輸出時別忘了標記負號。高精度乘法需要注意的問題是,要在做完乘法之後再調整為十進位制。有的初學者小盆友喜...

高精度運算

雖說高精度直接考查的越來越少,不過還是以防萬一。define maxlen 1000 struct bint 本模板既可輸入字串,也可輸入整數 bint int t if len 1 len bint char str print number friend void print bint bi p...

高精度運算

name 高精度運算 author goal00001111 date 01 12 08 15 04 description 高精度運算 加減乘除,乘方,階乘 include include using namespace std void reverse string str void addin...