大數 高精度數 模板 分享

2022-10-04 05:09:08 字數 2506 閱讀 8171

複製** **如下:

#include

#include

#include

#include

#include  

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using  namespace  std;     

const  int maxl = 500;     

struct  bignum     

;     

//高精度比較 a > b return 1, a == b return 0; a < b return -1;     

int  comp(bignum &a, bignum &b)     

//高精度加法     

bignum  add(bignum &a, bignum &b)     

}     

if(c.num[len])

len++;     

c.len = len;     

return  c;     

}     

//高精度減法,保證a >= b     

bignum sub(bignum &a, bignum &b)     

}     

while(c.num[len] == 0 && len > 1)

len--;     

c.len = len;     

return  c;     

}     

//高精度乘以低精度,當b很大時可能會發生溢位int範圍,具體情況具體分析     

//如果b很大可以考慮把b看成高精度     

bignum mul1(bignum &a, int  &b)     

for(i = 0; i < len; i++)     

}     

while(c.num[len] > 0)     

c.len = len;      

return  c;     

}     

//高精度乘以高精度,注意要及時進製,否則肯能會引起溢位,但這樣會增加演算法的複雜度,     

//如果確定不會發生溢位, 可以將裡面的while改成if     

bignum  mul2(bignum &a, bignum &b)     

}}    len = a.len+b.len-1;     

while(c.num[len-1] == 0 && len > 1)

len--;     

if(c.num[len])

len++;     

c.len = len;     

return  c;     

}     

//高精度除以低精度,除的結果為c, 餘數為f     

void div1(bignum &a, int &b, bignum &c, int &f)     

while(len > 1 && c.num[len-1] == 0)

len--;     

c.len = len;     

}     

//高精度*10     

void  mul10(bignum &a)     

//高精度除以高精度,除的結果為c,餘數為f     

void div2(bignum &a, bignum &b, bignum &c, bignum &f)     

}     

while(len > 1 && c.num[len-1] == 0)

len--;     

c.len = len;     

}  

void  print(bignum &a)   //輸出大數  

//將字串轉為大數存在bignum結構體裡面     

bignum twww.cppcns.comonum(char *s)     

void init(bignum &a, char *s, int &tag)   //將字串轉化為大數

a.len = j;

for(; s[i] != '\0'; i++, j--)

a.num[j-1] = s[i]-'0';

}  

int main(void)     

else   

}  

return 0;  

}

本文標題: 大數(高精度數)模板(分享)

本文位址:

高精度整數模板

include define maxlen 450 陣列長度上限,可以根據需求自行設定 define base digit 9 運算的進製,9代表以10 9計算 define base 1000000000 10 9進製 define printchar d 專長整數輸出定義的字串 define i...

高精度 數樓梯

洛谷 p1255 數樓梯 題目描述 樓梯有n階,上樓可以一步上一階,也可以一步上二階。編乙個程式,計算共有多少種不同的走法。分析 只用稍微用用腦子就可以看出,這是一道斐波那契數列的問題 不過省略了開頭的1,即這裡的數列為 12358 注意n 0,1,2的情況。然而這題需要高精所以寫的特別長 incl...

高精度 數樓梯

題目 樓梯有n階,上樓可以一步上一階,也可以一步上二階。編乙個程式,計算共有多少種不同的走法。乙個數字,樓梯數。走的方式幾種。輸入 1 複製 4輸出 1 複製 5說明 提示 60 n 50 100 n 5000 原本一看,這不是 斐波那契數列 嗎,直接公式下去寫完,dp i dp i 1 dp i ...