高精度計算 大整數乘法

2021-07-02 05:18:32 字數 1001 閱讀 6487

問題描述

求兩個不超過 200 位的非負整數的積。

輸入資料

有兩行,每行是乙個不超過 200 位的非負整數,沒有多餘的前導 0。

輸出要求

一行,即相乘後的結果。結果裡不能有多餘的前導 0,即如果結果是 342,那麼就不能

輸出為 0342。

輸入樣例

12345678900

98765432100

輸出樣例

1219326311126352690000

解題思路

乘法規律,乙個數的第i位和另乙個數的第j位相乘,一定會累加到結果的第i+j位,結果的陣列乙個陣列元素存2位數,最後對結果處理進製,最後列印出來

#include 

#include

#include

#include

#define max_len 200

int x[max_len + 20], y[max_len + 20], z[max_len * 2 + 20];

char a[max_len + 20], b[max_len + 20];

void char_to_int(const

char s[ ], int x[ ])

}void big_int_mul(const

int x, const

int y, int z)

}for (i = 0; i < max_len * 2; i ++)

}}void big_int_print(const

int z)

}if (!flag)

printf("0");

printf("\n");

}int main( )

高精度正整數乘法問題

給定任意兩個高精度正整數a b,計算a與b的乘積。輸入檔案中有若干行,每一行上有兩個用字串表示的正整數a,b。輸入直到檔案結束。對每個輸入行上的兩個正整數a,b,在一行上先輸出形式a b 接著輸出a與b的積。12345 6788466 345 66 12345 6788466 83803612770...

高精度乘法(僅整數字)

all in code.實現任意位的大整數相乘,修改n和m即可 include includeconst int n 10010 const int m 2 10010 char sn1 n sn2 n int n1 n n2 n res n void big mul int len1,int le...

高精度 大整數減法

求兩個大的正整數相減的差。共2行,第1行是被減數a,第2行是減數b a b 每個大整數不超過200位,不會有多餘的前導零。一行,即所求的差。本題考察的是高精度減法。我們可以模擬減法的豎式計算過程從而實現高精度的計算。和高精度加法一樣,也是使用字串來進行輸入 儲存。豎式計算時,也是低位對齊,從低位向高...