題目:輸入乙個正整數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...