大整數運算
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 本題考察的是高精度計算...