链接:http://acm.hdu.edu.cn/showproblem.php?pid=1018
题意:输入一个整数,输出这个数的阶乘的位数
思路:
没有!
吸收知识:
1.对数函数的认识:
log( n ) //返回以e为底的对数
log10( n ) //返回以10为底的对数
(1) 换底公式: 通过此公式,可以求以n为底的对数(比如常用的 long2( n ))
2.可以用 取对数求一个数的位数 :
n的位数 = log10( n ) + 1 ;
3.斯特林公式:
详细讲解见百度百科:http://baike.baidu.com/link?url=qAkgOnH7M0kYQMtco7fBGsk8ILKhhalouXUo-C4NmjsSv9rZEetsTRpqqddHK2-QWLIOXHvtjV7IUKsCCRzlIq
Accepted代码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define Pi 3.1415926
#define e 2.71828182
int main(){
int T;
cin>>T;
while(T--){
int n;
cin>>n;
cout<<(int)(ceil ( 1/2.0 * log10( 2.0 * Pi * n ) + n * log10( n*1.0 ) - n * log10( e*1.0 ) ) )<<endl;
}
return 0;
}
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1018
题意:输入一个整数,输出这个数的阶乘的位数
思路:
没有!
吸收知识:
1.对数函数的认识:
log( n ) //返回以e为底的对数
log10( n ) //返回以10为底的对数
(1) 换底公式: 通过此公式,可以求以n为底的对数(比如常用的 long2( n ))
2.可以用 取对数求一个数的位数 :
n的位数 = log10( n ) + 1 ;
3.斯特林公式:
详细讲解见百度百科:http://baike.baidu.com/link?url=qAkgOnH7M0kYQMtco7fBGsk8ILKhhalouXUo-C4NmjsSv9rZEetsTRpqqddHK2-QWLIOXHvtjV7IUKsCCRzlIq
Accepted代码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define Pi 3.1415926
#define e 2.71828182
int main(){
int T;
cin>>T;
while(T--){
int n;
cin>>n;
cout<<(int)(ceil ( 1/2.0 * log10( 2.0 * Pi * n ) + n * log10( n*1.0 ) - n * log10( e*1.0 ) ) )<<endl;
}
return 0;
}