演算法競賽經典入門 第五章階乘的精確值

2021-07-24 23:46:15 字數 818 閱讀 9365

#include

#include

const int maxn = 3000;

int f[maxn];

int main()

}for(j = maxn-1; j >= 0; j--) if(f[j]) break;

for(i = j; i >= 0; i--) printf("%d", f[i]);

printf("\n");

return 0;

}//原來計算階乘是這樣的

#include

long int f(int n)

int main()

//當數很大很大很大的時候,第二種方法就需要改進,第一種方法精度比較高

//即使是unsigned long long 最大表示也是18446744073709551615

//而30!已經比這個數大很多了

//就算是想要把超過的進製放到另乙個unsigned long long 裡也

//沒法實現,因為超出的進製根本就拿不到啊.....

//嗯我要變成方法一的死忠粉了....

//有沒有其他辦法呢?......待老衲想想....

memset

void *memset(void *s, int ch,

size_t n);

函式解釋:將s中當前位置後面的n個位元組 (typedef unsigned int size_t )用 ch 替換並返回 s 。

memset:作用是在一段記憶體塊中填充某個給定的值,它是對較大的

結構體或

陣列進行清零操作的一種最快方法

[1]。

演算法競賽入門經典 第五章因子和階乘

include include int is prime int n int prime 100 count 0 int main for int i 0 i maxp i printf d p i printf n return 0 分析思路 1.將n 1 2 3.n每乙個乘積項進行素數乘積的檢驗...

演算法競賽入門經典第五章

例 5.1.3 週期串 fgets str,max,stdin scanf s str fgets 函式執行後,str會讀到 n 符號停下,也就是提取一行,n 也被讀進字串,因此strlen str 會比原本輸入的字串多乙個 除了一種很特殊的情況,讀入一行時,只一行並不是以 n 結束,而是以eof結...

演算法競賽入門經典 第五章 6174

假設你有乙個各位數字互不相同的四位數,把所有數字從大到小排序後得到a,從小到大排序後得到b,然後用a b替換原來這個數,並且繼續操作。例如,從1234出發,依次可以得到4321 1234 3087,8370 378 8352,8352 2358 6174,有趣的是,7641 1467 6174,回到...