經典例題 高精度(大整數)運算

2021-10-05 18:37:27 字數 1032 閱讀 6873

大整數運算

1. 藍橋杯—大整數階乘

問題描述

輸入乙個正整數n,輸出n!的值。

其中n!=1 * 2 * 3…n

解決思路:

n!非常大,可以使用陣列儲存各位,a[0]表示最低位,初始化為1,然後迴圈,每一位都乘以2、3、……n,根據各位大小判斷是否向前進製,最後逆序輸出各位即可

#include

#include

using

namespace std;

intmain()

for(

int k=

0;ksize()

;k++)}

}for

(int i=a.

size()

-1;i>=

0;i--

)return0;

}輸入:10

輸出;3628800

2. 大整數加法

輸入兩個大整數,輸出其結果

解決方案:

按字串讀入兩個大整數,將其反轉並存入初始化為0的int陣列,根據最長的數字,遍歷兩陣列求和,反序輸出即可

#include

using

namespace std;

intmain()

,num2[

1000]=

;//陣列初始化為0儲存兩大整數

for(

int i=

0;i)for

(int i=

0;i)for

(int i=

0;i(num1[maxlen]!=0

) maxlen++

;//如果最後一位存在進製,則長度加一

for(

int i=maxlen-

1;i>=

0;i--

)return0;

}

高精度整數運算

問題描述 編寫乙個程式,進行高精度整數的加 減 乘運算。輸入兩個十進位製大整數m和 n m n最長可達 50位 根據要求計算運算結果並輸出。輸入形式 標準輸入上依次分行輸入以下內容 1.第一行輸入第乙個大整數m。m可能帶有負號,後面是最長可達 50位的數字序列。2.第二行只有乙個字元,可以是 分別代...

高精度 大整數減法

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

高精度 大整數加法

求兩個不超過200位的非負整數的和。有兩行,每行是乙個不超過200位的非負整數,可能有多餘的前導0。一行,即相加後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342。22222222222222222222 33333333333333333333 本題考察的是高精度計算...