題目:
求乙個數字字串a與數字字串b的除法,並保留到小數點的後100位。
假設我們要求字串 「1」 與 "3"的除法,要求保留到小數點後的100位。
我們求string類的除法,即大數的減法。就得先明白減法的原理。一開始1/3,不夠除,所以我們要進製成10/3得到3,
這裡的10/3得到3,就是因為10-3 ,進行減法操作,進行了3次。所以小數點後就是0.3,10/3餘1,繼續用餘數1來除以3,不夠除,進製到10繼續上述的步驟到0.33 。 繼續上述的步驟到小數點後101位即可。(101位是要考慮進製)
所以,除法操作其實就是減法操作。
詳細string減法減法見
#include
#include
#include
using
namespace std;
intcmp
(string a, string b)
//有可能a 為"00" b為"4",所以要去0
}string substract
(string a, string b)
//進行減法操作
else
//要借位了
//這裡可以保證 i+k這一位上不是0
a[i + k]
= a[i + k]
-'1'
+'0'
;// a[i+k] - '1'是整數,整數還要變成字元
// a[i] - '0'是整數 b[i] - '0'是整數
a[i]
= a[i]
-'0'+10
-(b[i]
-'0')+
'0';}}
reverse
(a.begin()
, a.
end())
;//翻轉過來
if(a.
find_first_not_of
('0'
)== string::npos)
//從頭到尾全是0,則直接返回0,
return
"0";
return a.
substr
(a.find_first_not_of
('0'))
;}string divide
(string a, string b)
//只考慮a小於b的情況
ans.
(to_string
(t));}
return ans;
}int
main()
高精度演算法 大數除法
由於被除數很大超過了longlong或者unsigned longlong,就需要使用大數除法。給定兩個正整數a,b,請你計算 a b的商和餘數。輸入格式 共兩行,第一行包含整數a,第二行包含整數b。輸出格式 共兩行,第一行輸出所求的商,第二行輸出所求餘數。資料範圍 1 a的長度 100000 1 ...
Redis五大資料型別 String
string型別是redis最基本的資料型別乙個鍵最大能儲存512mb set key value,set用於給key設定值,如果key已經有值了set會複寫舊值 get key,使用者獲取指定key的值,如果key不存在返回nil,如果key儲存的不是字串型別,返回乙個錯誤 setnx key v...
Redis五大資料型別 String
string 是 redis 最基本的型別,乙個 key 對應乙個 value。string 型別的值最大能儲存 512mb。基本命令 127.0.0.1 6379 set key1 hello 設定值 ok127.0.0.1 6379 get key1 獲取值 hello 127.0.0.1 63...