HDOJ 1018(阶乘位数)

简介: 1.log10(num)+1   2.较小数情况下,sprintf(str,"%d",num);输出strlen(str),所以不能初始化为0   自然对数:log()  ,以二为底log2(num)=log(num)/log2,因为那个自然对数的底是无理数,不好表示,只要有了自然对数的表示...

1.log10(num)+1

 

2.较小数情况下,sprintf(str,"%d",num);输出strlen(str),所以不能初始化为0

 

自然对数:log()  ,以二为底log2(num)=log(num)/log2,因为那个自然对数的底是无理数,不好表示,只要有了自然对数的表示,其他用换底公式就OK啦

 

 

 

我一直想的是求出阶乘后,再strlen(str),其实求阶乘位数有一个公式

 

 

 

//lnN!=NlogN-N+0.5*log(2*PI*N)

 

 

#include<stdio.h>

#include<math.h>

#define PI 3.14159265

int num,ans;

void count_factorial()

{

    double t;

    t = (num*log(num) - num + 0.5*log(2*num*PI))/log(10);

    ans= (int)t+1;

    printf("%d\n",ans);

}

int main()

{

    int i,n;

    scanf("%d",&n);

    for( i=1 ; i<=n ; i++ )  

    {

scanf("%d",&num);

count_factorial();

}

return 0;

}

 

3.

目录
相关文章
|
7月前
11.09作业详解(弹球距离,素数,最大公约数最小公倍数,求整数位数及其各位数字之和,打印乘法表)
11.09作业详解(弹球距离,素数,最大公约数最小公倍数,求整数位数及其各位数字之和,打印乘法表)
|
算法 C++ Python
每日算法系列【LeetCode 829】连续整数求和
每日算法系列【LeetCode 829】连续整数求和
122 0
LeetCode每日一题——829. 连续整数求和
给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 。
115 0
|
算法 前端开发 程序员
「LeetCode」剑指Offer-16数值的整数次方⚡️
「LeetCode」剑指Offer-16数值的整数次方⚡️
101 0
「LeetCode」剑指Offer-16数值的整数次方⚡️
HDOJ 2099 整除的尾数
HDOJ 2099 整除的尾数
88 0
HDOJ 2092 整数解(2次方程整数解公式)
HDOJ 2092 整数解(2次方程整数解公式)
131 0
HDOJ1021题 Fibonacci Again 应用求模公式
HDOJ1021题 Fibonacci Again 应用求模公式
131 0
HDOJ 2006 求奇数的乘积
HDOJ 2006 求奇数的乘积
92 0
HDOJ(HDU) 2504 又见GCD(利用最大公约数反推)
HDOJ(HDU) 2504 又见GCD(利用最大公约数反推)
107 0
HDOJ 2015 偶数求和
HDOJ 2015 偶数求和
134 0