高精度模板 c++/類封裝
實還在POJ上面寫過一個浮點數的乘法和加法運算,但個別題目會用到,所以不加進去了.
- #include<iostream>
- #include<cstring>
- #include<string>
- #include<cstdio>
- usingnamespace std;
- #define MAXN 1000
- struct HP
- {
- int len,s[MAXN];
- HP()
- {
- memset(s,0,sizeof(s));
-
len=1;
- }
- HP operator =(constchar *num) //字串賦值
- {
- len=strlen(num);
- for(int i=0;i<len;i++) s[i]=num[len-i-1]-'0';
- }
- HP operator =(int num) //int 賦值
- {
- char s[MAXN];
- sprintf(s,"%d",num);
- *this=s;
- return *this;
-
}
- HP(int num) { *this=num;}
- HP(constchar*num) {*this=num;}
- string str()const//轉化成string
- {
- string res="";
- for(int i=0;i<len;i++) res=(char)(s[i]+'0')+res;
- if(res=="") res="0";
- return res;
- }
-
HP operator +(const HP& b) const
- {
- HP c;
- c.len=0;
- for(int i=0,g=0;g||i<max(len,b.len);i++)
- {
- int x=g;
- if(i<len) x+=s[i];
- if(i<b.len) x+=b.s[i];
- c.s[c.len++]=x%10;
- g=x/10;
- }
- return c;
- }
- void clean()
- {
- while(len > 1 && !s[len-1]) len--;
- }
- HP operator *(const HP& b)
- {
- HP c;
- c.len=len+b.len;
- for(int i=0;i<len;i++)
- for(int j=0;j<b.len;j++)
- c.s[i+j]+=s[i]*b.s[j];
- for(int i=0;i<c.len-1;i++)
- {
- c.s[i+1]+=c.s[i]/10;
- c.s[i]%=10;
- }
- c.clean();
- return c;
- }
- HP operator - (const HP& b)
- {
- HP c;
- c.len = 0;
- for(int i=0,g=0;i<len;i++)
- {
- int x=s[i]-g;
- if(i<b.len) x-=b.s[i];
- if(x>=0)
- g=0;
- else
- {
- g=1;
- x+=10;
- }
- c.s[c.len++]=x;
- }
- c.clean();
- return c;
- }
- HP operator / (const HP &b)
- {
- HP c, f = 0;
- for(int i = len-1; i >= 0; i--)
- {
- f = f*10;
- f.s[0] = s[i];
- while(f>=b)
- {
- f =f-b;
- c.s[i]++;
- }
- }
- c.len = len;
- c.clean();
- return c;
- }
- HP operator % (const HP &b)
- {
- HP r = *this / b;
- r = *this - r*b;
- return r;
- }
- HP operator /= (const HP &b)
- {
- *this = *this / b;
- return *this;
- }
- HP operator %= (const HP &b)
- {
- *this = *this % b;
- return *this;
- }
-
bool
相關推薦
高精度模板 c++/類封裝
實還在POJ上面寫過一個浮點數的乘法和加法運算,但個別題目會用到,所以不加進去了. #include<iostream> #include<cstring> #include<string> #include
高精度大數c++類模板 很好用
details lean 代碼 sprintf printf span tdi 我只 tar 首先聲明這是大佬寫的,我只是記錄下,拿來學習。附上大佬的鏈接 : https://blog.csdn.net/code4101/article/details/2302052
bign類C++高精度模板
很不錯的高精度模板,但這個模板只能算加、減、乘、除等基本運算,但操作減法的時候只能大數減小數,所以最重要的操作是 + 、 +=、*、*=、、/、/=、-=、==,>=,這些基本的運算,最近通過在UVA在刷的幾道題,發現自己以前的模板存在一些BUG,現在貼上已經改正的模
C++高精度模板
依據紫書第5章,我用新的方法實現一個高精度類。模板通過了自己用python進行的對拍,還有UVa的5道高精度題。由於類名不同,閒麻煩的可以加一句“typedef BigInteger bign”,就能用舊版高精度博文裡的main函式程式碼直接AC。不過UVa7
C++ 完全高精度模板 (hdu 4762)
Cut the Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 821 Accepted S
高精度模板Bigint Killer
add -- return -i algo sizeof 高精度 bsp while 1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 usi
真·純手擼高精度模板
其他 內容 == swap esp 精度 har 我不 return 耗時(50分鐘)不壓位 內容只有高精度+-*,因為其他我不會寫QAQ~ 均ACluogu,codevs #include<bits/stdc++.h> using namespac
高精度模板
style 技術分享 blog 目前 one stream std 。。 return 好,這就是naive的高精度模板。目前只有加法。 http://www.mamicode.com/info-detail-454902.html 可以參考這個。 1 #includ
高精度模板(從洛谷題解中騙來的
fine truct one sizeof pri PE sin sync main 乘法通用模板: #include <iostream> #include <cstdio> #include <algorithm> #
高精度模板(From JCVB)
swa eof its arr mat empty print con gcd 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #includ
【重載運算符+壓位】高精度模板
cor font 比較 返回 重載 algorithm == 轉換 一個 昨天做一道DP的題(矩陣取數遊戲),本來是很簡單的,但是要用高精度,又不想用__int128水過去(誰讓NOIP不讓),於是自己打了一個小時,最後掛了。。。 於是本蒟蒻痛定思痛,感覺高精度還是重載運
高精度模板(不定時更新)
void 支持 rev == memset spa -s -- code 以前寫高精度基本都是抄別人的……這次要改變一下了…… 現在的高精度模板還是很簡陋的,只支持高精加,減,乘,高精除低精,高精模低精,高精快速冪,高精比較大小,沒了。 或許以後會不定期更新一下……畢竟這個
NOIP複賽複習(四)讀寫外掛與高精度模板
讀入輸出掛 讀入輸出掛就是逐個字元地讀入資料,從而讓讀入更加快速。輸出掛的原理也是一樣的,都是通過將輸出數字變成輸出字元以加快速度。當然輸入輸出外掛一般用在大量輸入輸出的情況下,這樣價效比才高一些,否則得不償失。 void Rd(int &res){ &nbs
XDOJ 1046 - 高精度模板綜合測試 - [高精度模板]
題目連結:http://acm.xidian.edu.cn/problem.php?id=1046 題目描述 請輸出兩個數的和,差,積,商,取餘。注意不要有前導零。 輸入 多組資料,每組資料是兩個整數A,B(0<=A<=10^100,0<B<=10^100). 輸
高精度模板.
#include <iostream> #include <string> #include <cstring> #include <cstdio> using namespace std; const int maxn = 1000;
[note]高精度模板
turn lan wap void ret 模板 continue for oid 高精度模板 先定義一個struct struct gj{ int l,s[N]; bool fh; void Print(){ if(fh)putch
高精度 模板
高精度加法 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int __=1000100; char a1[__],b1[__];
高精度加法--C++
高精度加法–C++ 仿照豎式加法,在第一步計算的時候將進位保留,第一步計算完再處理進位。(見程式碼註釋) 和乘法是類似的。 #include <iostream> #include <
牛客No.5 B-div[高精度模板和pell]
題意:根據題意轉換能得到一個公式,是pell模型 佩爾方程: 形如x2-D*y2=1(D是一個固定的正整數且D不是完全平方數)的方程稱為佩爾方程 佩爾方程定理: 佩爾方程總有正整數解,若(x1,y1)是使x1最小的解,則每個解(xk,yk)都可以通過取冪得到:
高精度模板 WUSToj2238
2238: Virus outbreak Time Limit: 1 Sec Memory Limit: 128 MB Description The State