階乘計算 陣列

2022-07-21 19:36:12 字數 666 閱讀 3307

問題描述

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

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

演算法描述

n!可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a[0]表示a的個位,a[1]表示a的十位,依次類推。

將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的進製。

首先將a設為1,然後乘2,乘3,當乘到n時,即得到了n!的值。

輸入格式

輸入包含乙個正整數n,n

<=1000。

輸出格式

輸出n!的準確值。

樣例輸入

10樣例輸出

3628800

題解:1000的階乘過大,所以為大數乘法,可以考慮用陣列來進行模擬運算。但需要注意的是n小於等於1000,n的階乘位數肯定會大於這個數。此處取11000.

注意:開始寫**沒有準備t這個變數。結果導致num[i]結果改變,無法得出正確結果

ac**:

#include

#include

using namespace std;

int main()

while(jin)

}for(int i=wei; i>=1; i--)

cout

}

計算陣列的子集

計算某個陣列的子集 在遞迴中不用 for迴圈和 visit 陣列,因為每個結果長度不一致,如果每個結果長度一致,比如求全排列,則需要用 for和 visit 但後者也可以用記錄層數的方式 public class main list li new arraylist fin nums,li,new ...

計算陣列的小和

題目 陣列小和的定義如下 例如,陣列s 1,3,5,2,4,6 在s 0 的左邊小於或等於s 0 的數的和為0,在s 1 的左邊小於或等於s 1 的數的和為1,在s 2 的左邊小於或等於s 2 的數的和為1 3 4,在s 3 的左邊小於或等於s 3 的數的和為1,在s 4 的左邊小於或等於s 4 的...

計算陣列的小和

陣列小和的定義如下 例如,陣列s 1,3,5,2,4,6 在s 0 的左邊小於或等於s 0 的數的和為0 在s 1 的左邊小於或等於s 1 的數的和為1 在s 2 的左邊小於或等於s 2 的數的和為1 3 4 在s 3 的左邊小於或等於s 3 的數的和為1 在s 4 的左邊小於或等於s 4 的數的和...