HDU 1018 斯特林公式应用



链接:http://acm.hdu.edu.cn/showproblem.php?pid=1018


题意:输入一个整数,输出这个数的阶乘的位数


思路:

            没有!


吸收知识:

            1.对数函数的认识:

  
  
  1. log( n ) //返回以e为底的对数
  2. log10( n ) //返回以10为底的对数
    ​    ​    ​    ​    ​对数知识的补充:

​    ​    ​    ​    ​        ​    ​    ​(1)    换底公式:​​    ​通过此公式,可以求以n为底的对数(比如常用的 long2( n ))




            2.可以用 取对数求一个数的位数   :

 
 
  1. n的位数 = log10( n ) + 1 ;



            3.斯特林公式

    ​    ​    ​    ​

    ​    ​    ​    ​    ​详细讲解见百度百科:http://baike.baidu.com/link?url=qAkgOnH7M0kYQMtco7fBGsk8ILKhhalouXUo-C4NmjsSv9rZEetsTRpqqddHK2-QWLIOXHvtjV7IUKsCCRzlIq





Accepted代码:

 
 
  1. #include<iostream>

  2. #include<cstdio>

  3. #include<cmath>

  4. using namespace std;

  5. #define Pi 3.1415926

  6. #define e 2.71828182

  7. int main(){

  8.          int T;

  9.          cin>>T;

  10.          while(T--){

  11.                    int n;

  12.                    cin>>n;

  13.                    cout<<(int)(ceil ( 1/2.0 * log10( 2.0 * Pi * n ) + n * log10( n*1.0 ) - n * log10( e*1.0 ) )  )<<endl;

  14.          }

  15.          return 0;

  16. }


链接:http://acm.hdu.edu.cn/showproblem.php?pid=1018


题意:输入一个整数,输出这个数的阶乘的位数


思路:

            没有!


吸收知识:

            1.对数函数的认识:

   
   
  1. log( n ) //返回以e为底的对数
  2. log10( n ) //返回以10为底的对数
    ​    ​    ​    ​    ​对数知识的补充:

​    ​    ​    ​    ​        ​    ​    ​(1)    换底公式:​​    ​通过此公式,可以求以n为底的对数(比如常用的 long2( n ))




            2.可以用 取对数求一个数的位数   :

  
  
  1. n的位数 = log10( n ) + 1 ;



            3.斯特林公式

    ​    ​    ​    ​

    ​    ​    ​    ​    ​详细讲解见百度百科:http://baike.baidu.com/link?url=qAkgOnH7M0kYQMtco7fBGsk8ILKhhalouXUo-C4NmjsSv9rZEetsTRpqqddHK2-QWLIOXHvtjV7IUKsCCRzlIq





Accepted代码:

  
  
  1. #include<iostream>

  2. #include<cstdio>

  3. #include<cmath>

  4. using namespace std;

  5. #define Pi 3.1415926

  6. #define e 2.71828182

  7. int main(){

  8.          int T;

  9.          cin>>T;

  10.          while(T--){

  11.                    int n;

  12.                    cin>>n;

  13.                    cout<<(int)(ceil ( 1/2.0 * log10( 2.0 * Pi * n ) + n * log10( n*1.0 ) - n * log10( e*1.0 ) )  )<<endl;

  14.          }

  15.          return 0;

  16. }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值