在刷題時偶然遇到了高精度階乘的問題,於是立即自學了一下,在此作簡要總結。
提出背景:普通的階乘演算法(不斷用i*(i+1)迴圈)對於較大數的階乘,由於運算結果位數過大,會造成溢位,使結果精度低。此時引出高精度計算階乘的方法。
實現思路:用陣列倒序儲存每一位的數,手動調整進製,再倒序輸出
程式**:
#include
#define len 100000
void
factorial
(int
* p,
int x)
;int
main
(int argc,
char
* ar**)
;int x,i,j;
int* p=num;
scanf
("%d"
,&x)
;factorial
(p,x)
;for
(j=len-
1;j>=
0;j--)if
(*(p+j)
>0)
break
;for
(i=j;i>=
0;i--
)printf
("%d",*
(p+i));
}void
factorial
(int
* p,
int x)
//計算x的階乘,存入陣列num
}}
高精度階乘
問題描述 輸入乙個正整數n,輸出n 的值。其中n 1 2 3 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相...
高精度階乘
問題描述 輸入乙個正整數n,輸出n 的值。其中n 123 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的...
階乘之和(高精度)
題目描述 用高精度計算出s 1 2 3 n n 50 其中 表示階乘,例如 5 5 4 3 2 1。輸入格式 乙個正整數n。輸出格式 乙個正整數s,表示計算結果。輸入輸出樣例 輸入3輸出9 過載運算子 include include include include using namespace s...