高精度模板

2021-07-24 17:42:00 字數 1759 閱讀 6793

本模板資瓷正數範圍內的以下操作,不資瓷負數(其實加乙個符號判定就可以了):

打鉤√表示直接資瓷,打叉x表示不直接資瓷,詳見括號。

高精度 + 整數 x(最*****的操作,懶得打,也許以後會補上?)

高精度 + 高精度 √

高精度 - 整數 √

高精度 - 高精度 √

高精度 * 整數 √

高精度 * 高精度 √

高精度 / 整數 √

高精度 / 高精度 √(base調成10後複雜度才是對的)

高精度 % 整數 x (直接用乘法和減法做,複雜度應該也是對的)

高精度 % 高精度 √(用完除法模板之後的this就是餘數)

upd (2018.06.13) : 感謝 dntcrybecthlev 的指正

#include#include#include#include#define base10000

#define l20005

using namespace std;

int p;

char s[10*l];

struct bigint

bigint operator + (bigint b)

if(c.num[c.len])c.len++;

return c;

}bigint operator - (bigint b)

}while(!c.num[c.len

-1] && c.len >1)c.len--;

return c;

} bigint operator - (int b)

while(!c.num[c.len

-1] && c.len >1)c.len--;

return c;

}bigint operator * (bigint b)

}if(!c.num[c.len

-1] && c.len >1)c.len--;

return c;

}bigint operator * (int b)

c.len = len;

while(c.num[c.len])c.len++;

return c;

}bool substract(bigint b, int pos)

}while(!num[len

-1] && c.len >1)len--;

return

true;

}bigint operator / (bigint b)

b.len = len;

for(int i =0; i <= k; i++)

while(this->substract(b,i)) c.num[k-i]++;

for(int i =0; i < c.len; i++)

while(!c.num[c.len

-1] && c.len >0) c.len--;

return c;

}bigint operator / (int b)

for(c.len = len; !c.num[c.len

-1] && c.len >1; c.len--);

return c;

}bool scan()

return

true;

}void clr()

void print()

};int main()

高精度模板

include include include includeusing namespace std define maxn 9999 define maxsize 10 define dlen 4 class bignum bignum const int 將乙個int型別的變數轉化為大數 big...

高精度模板

include include include include include using namespace std const int maxn 1000 struct bign bign operator const char num 過載運算子 bign const char num 支援初...

高精度模板

include include include includeusing namespace std define maxn 9999 define maxsize 10 define dlen 4 class bignum 建構函式 bignum const int 將乙個int型別的變數轉化為大...