关于 阶乘的若干定理

时间:2022-09-10 16:08:44 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
给定一个数要你求出n!的位数HDU 1018

//常规算法,能过,但慢一些

//主要思想就是 n!=10^m; 这样只要求出m再向下取整加1就可以了

// 上面等式两边去log10,然后 m=log101+log102+~~~~~~~+log10n // //

#include #include #include using namespace std; int main() {

int T;

scanf("%d",&T); int n,i; while(T--) {

scanf("%d",&n); double ans=1.0; for(i=1;i<=n;++i)

ans+=log10((double)i); printf("%d\n",(int)ans); }

return 0; }

//斯特林公式法, 特别快。 const double pi=3.14159265;

double ans=(n*log((double)n)-n+0.5*log((double)2*n*pi))/log(10.0); printf("%d\n",(int)ans+1);

n!后面有多少个零 DUT OJ 1184

// 这道题的思想 就是找出n 中能有多少个5,因为10只能由5的偶数倍得到,即便有 //10,也要分成两个5 偶数是足够多的。对n 一直除以5,每次除得的余数加,直到0 #include int main() {

int T;

scanf("%d",&T); int n; while(T--) {

scanf("%d",&n);


int counter=0; while(n) {

counter+=n/5; n/=5; }

printf("%d\n",counter); }

return 0; }


本文来源:https://www.wddqw.com/doc/badc3aa06629647d27284b73f242336c1fb93053.html