哈哈~要說這個題目,中午比賽的時候1ac了、、歸功於之前寫過的求大數的階乘這個演算法啊。。
在電腦上除錯了一會,發現求階乘的過程是一段段輸出的。。就比如說10的階乘,先輸出362,然後8800,
知道了這點,那麼求n的階乘最後乙個非0的數就變得很簡單了。。只要加個while判斷一下,就ok了、、
#include#include#include#includeusing namespace std;
#define n 10005
int main()
long s[n] = ;
len = 1;
for(i= 2; i <= n; i ++)
if(s[j] > 10000 )
} int tt;
int flag = 0;
for (int j = 0; j < len; j ++)
}if(flag == 1)
} }
return 0;
}
好吧。看到他們的**了、、好簡單啊。。。
#includeint main()
printf("%5d -> %lld\n",n,s%10);
}return 0;
}
計算n!的最後一位非0的數
includeint main if sum 100 這裡若設定太小,當階乘很大時,會出現錯誤 printf d d n i,sum 該處為測試所用 printf d sum 10 return 0 這裡需要說明的是,當if sum 100 判斷條件不夠大時,比如只有sum 10,那麼每次只保留階乘...
N階乘尾部的0個數
描述 設計乙個演算法,計算出n階乘中尾部零的個數 思路 1 1 2 3 n 1 2 3 2 2 5 2 3 7 2 2 2 3 3 2 5 化成質數相乘,只有2 5才可能得到結果有尾數中有0 2 因為2的個數是比5多的,求0的個數問題就轉化成了求5的個數的問題 3 5 5 5 5 5 5有n個5 得...
乙個整數的階乘最後有多少個0
問題 乙個整數的階乘最後有多少個0 分析 整數n的階乘 n!1 2 3 4 5 6 n 我們可以對n!進行分解質因數 即 n!2x 3y 5z 7w 其中能夠產生0的只有2和5,其他不會產生0 2和5相乘必然會產生乙個10,而這個10會在階乘的末尾新增乙個0。那麼問題就轉化為2x 5z 可以產生多少...