就是個簡單的高精度,只是一開始我打表超記憶體了,然後用了各種技巧硬是把記憶體縮到了題目要求以下(5w+kb),感覺挺爽的,**如下:
1 #include2 #include3 #include4 #include5using
namespace
std;
6 typedef long
long
ll;7
const
int m = 5002;8
const
int mod =1e6;910
int b[m + 3][2800], len[m + 3
];11
12 inline void init(int n =m)
23while
(carry)
27 len[i] =x;28}
29}3031 inline void print(const
int &x)
3940 inline void output(const
int &n)
4950
intmain()
出題人原意應該不是讓我們打表,而是每讀入乙個數重新計算乙個數……吧:
1 #include2 #include3 #include4 #include5const
int m = 5002;6
7int b[2][18000];8
9 inline void solve(const
int &n)
19while
(carry) 23}
24for(int j = len - 1; j >= 0; --j)
25 putchar(b[n & 1][j] + '0'
);26 puts(""
);27}28
29 template 30 inline bool read(t &x)
39return1;
40}4142
intmain()
NYOJ 28 大數階乘
題意 對於比較小的n,求其階乘的時候可以用遞迴解決。但是如果n很大的時候,比如1000,那麼n 肯定超出整形資料所能表示的範圍。因此必須採用其它方法解決,通常解決大數運算資料超出範圍的問題時採用陣列去模擬。其實求算n 可以看成是每次兩個整數相乘的過程,因此可以模擬成大數相乘的過程。只是需要增加一些變...
NYOJ 大數階乘
描述 我們都知道如何計算乙個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它?輸入 輸入乙個整數m 0 m 5000 輸出 輸出m的階乘,並在輸出結束之後輸入乙個換行符 樣例輸入 樣例輸出 include include define max 20000 最大數5000 5000 4 i...
大數運算 7 大數階乘 求階乘
對於大數來說,乙個數的階乘是非常大的,同樣,乙個int型別的整數,他的階乘就有可能會很大。就拿50來說,他的階乘位數是65位,就已經遠遠超過了long long int型別的最大值。這時候,我們要通過字串的方法,來進行階乘的運算。當然,需要注意的是 我們所求乙個數的階乘,這個數是在int範圍內的,5...