暑假訓練12 階乘計算 高精度處理

2021-10-07 11:47:45 字數 990 閱讀 8937

[藍橋杯][基礎練習vip]階乘計算

題目描述

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

其中n!=123*…*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

無捷徑,全靠板子

// 階乘計算 --- 相當於就是高精度乘法的變形

#include

#include

#include

using

namespace std;

int num1[

500005];

int num2[10]

;int num3[

500005];

int n;

voidbt(

int k)

num2[0]

= t;

//儲存個數

}//乘法板子 0位都採取儲存位數的方式

void

mul(

)int k = num1[0]

+num2[0]

;while

(num3[k]==0

&&k>

0) k--

; num3[0]

= k;

}int

main()

}for

(int i = num1[0]

;i>=

1;i--

) cout<;return0;

}

階乘計算(高精度)

基礎練習 階乘計算 時間限制 1.0s 記憶體限制 512.0mb 問題描述 輸入乙個正整數n,輸出n 的值。其中n 1 2 3 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類...

階乘計算(高精度)

問題描述 輸入乙個正整數 n,輸出 n 的值。其中 n 1 2 3 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列 a來表示乙個大整數 a,a 0 表示 a的個位,a 1 表示 a的十位,依次類推。將 a乘以乙個整數 k變為將陣列 a的每乙個元素都...

基礎演算法 高精度計算 高精度加法

輸入兩個數到兩個變數中,然後用賦值語句求他們的和,輸出。但是,我們知道,在c 中任何資料型別都有一定表示範圍。當兩個被加數很大時,上述演算法顯然不能求出精確解,因此尋求另外一種方法。在讀小學時,我們做加法都採用豎式方法,這樣,我們可以寫出兩個整數相加的演算法。我們用陣列a b分別儲存加數和被加數,用...