HDOJ 1018(阶乘位数)
生活随笔
收集整理的這篇文章主要介紹了
HDOJ 1018(阶乘位数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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.
總結
以上是生活随笔為你收集整理的HDOJ 1018(阶乘位数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocos2d-x 连帧动画实现
- 下一篇: Linux /etc/inittab