51nod 1057 n的階乘 (壓位優化)

2022-05-26 20:18:08 字數 585 閱讀 6875

使用壓位進行優化,即一位數存多位數,例如當設定mod=1e8時,一位數可以存8位數;

其次,注意尾數0,因為壓位,一位需要輸出8個0,故第乙個數應單獨輸出;

這樣優化可以到100ms以內;

1 #include2 #include3 #include4

using

namespace

std;56

#define min(a,b) a>b?b:a

7#define ll long long

8const ll mod =1e8;

9const

int n = 10000;10

ll n, a[n];

1112

intmain()

1327

if(carry>0

) 30

}31 printf("

%lld

", a[len--]);

32while(len>=0

) 36 putchar('\n'

);37}38

return0;

39 }

51Nod 1057 N的階乘(數論)

輸入n求n的階乘的準確值。input 輸入n 1 n 10000 output 輸出n的階乘input示例 5output示例 120主要思路手算模擬學習點 printf 04d 5 0005printf 4d 5 5 後加三個空格 自己 include stdio.h include stdlib...

51Nod 1057 N的階乘(大數乘法)

輸入n求n的階乘的準確值。輸入n 1 n 10000 輸出n的階乘5120這道題如果用常規的模擬乘法可能有一半的測試點超時。我來說一下超時原因 因為20的階乘,就已經達到2432902008176640000了,但是常規演算法中頻繁進製操作其實很耗時,所以將原來的陣列乙個位置只存一位數改為乙個位置存...

51nod1057 N的階乘 大數乘法巧解

這道大數乘法開始我是想套板子模擬的。然後就發現2 3的例子都wa了。驚了 然後在思考後發現n2的板子的確過不了這麼多的大數。不看題的下場 所以,我在網上發現了分塊求大數的方法。思路來自這位大佬的帖子 總的來說,就是把這個乘積分成8位數 自己定 一小塊,然後考慮進製,最後倒著輸出來就行。如下 incl...