高精度任意長度實數乘法

2021-06-23 02:33:52 字數 1699 閱讀 4767

模組:1、字串轉整型陣列模組:將字串轉化為整型陣列儲存。

2、乘法演算法模組:實現兩個整型陣列表示的實數相乘,結果用整型陣列儲存。

3、輸出模組:將得到的結果根據不同的需求輸出.

1、字串轉整型陣列模組:將字串轉化為整型陣列儲存。

inline long long trans_to_num(const string &one,vector&multione)

if(tmp != 0)

tmp = one.size()-1-tmp;

return tmp;

}

2、乘法演算法模組:實現兩個整型陣列表示的實數相乘,結果用整型陣列儲存。

vectorpreci_multi(const vector&multione,const vector&multitwo)

temp = multione[i]*multitwo[j] + full;

full = temp/10;

result.push_back(temp%10);

} ++i;

while(i != loop1)

temp = multione[i]*multitwo[j] + result[i+j] + full;

full = temp/10;

result[i+j] = temp%10;

} ++i;

} return result;

}

3、輸出模組:將得到的結果根據不同的需求輸出。

void resul_print(const vector&result,const long long &point_num)

for(j=i;j>=point_num;--j)

if(tmp != 0)

tmp = one.size()-1-tmp;

return tmp;

}void resul_print(const vector&result,const long long &point_num)

for(j=i;j>=point_num;--j)

temp = multione[i]*multitwo[j] + full;

full = temp/10;

result.push_back(temp%10);

} ++i;

while(i != loop1)

temp = multione[i]*multitwo[j] + result[i+j] + full;

full = temp/10;

result[i+j] = temp%10;

} ++i;

} return result;

}int main(){

string one;

long long n;

//對浮點數,整型的字串形式進行整理

//unsigned short可以用更小的記憶體來儲存

while(cin>>one>>n){

vectormultione;

long long point_num = n*trans_to_num(one,multione);

//for(int l=0;lresult(multione);

if(n > 1){

for(long long i=0;i

高精度減法,高精度乘法

高精度減法 oj資料偏弱如果新增乙個101 2就錯了,下面這一步是為了防止錯誤的 if a aa 0 可能出現第一位的1被借走的的情況,所以加乙個while找第乙個不是0的 while c i 0 i include include include include include include u...

高精度乘法

問題描述 給你兩個正整數a,b,計算它們的乘積。輸入格式 第一行乙個正整數a 第二行乙個正整數b 輸出格式 一行,表示a b 樣例輸入 111222333444555666777888999 999888777666555444333222111 樣例輸出 提示 a,b分別不超過100000位 ff...

高精度乘法

include include include includeusing namespace std const int maxn 5000 inline int get struct data data operator const data b for int i 1 i c.len i whi...