高精度N的階乘 N!

2022-02-06 21:23:34 字數 804 閱讀 9864

題目:輸入乙個正整數n(0#include#include#includeusing namespace std;

int a[2005]=;

int main() }

if(n==1)cout<<"1";

else

這裡來說明幾個變數的意義:1.sum 是位數和數i的乘積與進製數t之和 2.a[j]儲存位數 3.t代表進製數

sum=a[j]*i+t;在階乘的過程中,從小的位數到大的位數依次乘以此時的數i,sum儲存此時第j位位數與i相乘之後再加上進製數t的和。

a[j]=sum%10;位數保留sum的個位數。

t=sum/10;進製數t=sum/10。

舉個例子:24*5 先對24的個位4進行處理,4乘以5等於20,此時sum=20,留下的位數為0,進製數t=2;再對十位數2進行處理,2乘以5等於10,此時的sum=2x5+t=10+2=12,保留個位數字2為位數,進製數t=12/10=1;那麼下一次執行的時候,sum=0+t=1,a[j]=1,t=0。實際上對數字位數的遍歷操作已經結束了。

此時保證了在遍歷陣列元素(位數)的過程中,不會發生越界的現象,我在剛剛開始的時候對所有陣列的元素賦值0,保證不會出現奇怪的錯誤和多位的情況。

最後輸出的時候,用乙個狀態變數b,判斷是否遇到了我們儲存的「最大的」位數,是的話開始輸出。

高精度階乘

問題描述 輸入乙個正整數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,請注意處理相應的...

計算2的n次方(高精度)

problem description 任意給定乙個正整數n n 100 計算2的n次方的值。input 輸入有多行,每行只有乙個正整數n。output 輸出2的n次方的值。sample input51 sample output322 用c語言實現的 如下 include include incl...