HDU 1042 N 大數與小數相乘的乘法模擬

2022-05-20 21:04:32 字數 622 閱讀 8331

本題大意:給定乙個10000以內的整數n,讓你求出n!並輸出。

本題思路:先初始化乙個存放答案的陣列ans,初始ans[0] = 1,並初始化其剩下的元素為0,接著就從2開始依次與ans陣列內的每乙個數相乘,具體乘法過程見**,需要注意的就是求divisor時自身此時的值也是需要加上的,還有就是注意當存在餘數並且當前位數已經不夠用的情況下才將總位數加一否則不加,答案裡會出現很多前導零。

1 #include 2 #include 3 #include 4

using

namespace

std;56

const

int maxn = 2e5 + 5;7

intn, tot, now, divisor, t;

8int

ans[maxn];910

intmain () 22}

23for(int i = tot - 1; i >= 0; i --)

24 printf("%d"

, ans[i]);

25 printf("\n"

);26}27

return0;

28 }

view code

HDU1042 N (大數運算)

題目鏈結 求 n 的階乘,階乘大家都會,這道題考的就是大數,因為 n 的取值達到了10000,那麼他的結果的位數就已經達到了上萬了。所以就是模擬大數乘法,因為階乘時,乙個數很大,另乙個數是相對較小的,所以思路是比較簡單的。具體的思路就是,以前計算乘法時是用乙個數的每一位去乘另乙個數,然後按照一定的規...

HDU 1042 N 大數乘法 C語言

這是一道簡單的數學題,求乙個數 n 的階乘。但是問題是題中n給的非常大 0 n 10000 用for迴圈來做顯然不行了。1.開闢乙個夠大的陣列,保證大於1000!所佔的位數,我是以最大情況來估算,即1000個1000相乘,開一百萬吧,反正我們老大 miyu 說了陣列空間爛便宜。2.然後就是挨個來乘了...

HDOJ1042 大數 小數

題目很簡單,就是輸入乙個n,求n的階乘。這個題目是乙個大數乘小數的問題,例如n n 1 n,這裡,n 1 為大數,表示為字串的形式,n為小數,表示為int的形式。這道題的重點就是寫乙個函式實現乙個大數乘小數。一開始我的做法是大數和小數全部作為字串處理,類似於小學時的基本的豎式乘法來計算,這樣的話時間...