zoukankan      html  css  js  c++  java
  • 南阳--69(数的长度)

    数的长度

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:1
     
    描述

        N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)?

     
    输入
    首行输入n,表示有多少组测试数据(n<10)
    随后n行每行输入一组测试数据 N( 0 < N < 1000000 )
    输出
    对于每个数N,输出N!的(十进制)位数。
    样例输入
    3
    1
    3
    32000
    样例输出
    1
    1
    130271
    
    来源
    ACM教程
    上传者
    rooot
    //斯特林公式:(long)( (log10(sqrt(4.0*acos(0.0)*n)) + n*(log10(n)-log10(exp(1.0)))) + 1 );(耗时少)
    推导→n!的位数为[lg(n*(n-1)*(n-2)*…..*1)]+1=[lg(n)+lg(n-1)+lg(n-2)   +….+lg(1)]+1 (耗时多)
     1 #include <stdio.h>
     2 #include <math.h>
     3 int main()
     4 {
     5     int n, i, t ; 
     6     double d ;
     7     scanf("%d", &t) ;
     8     while(t--)
     9     {
    10         scanf("%d", &n) ;
    11         d = 0.0 ;
    12         for(i=1; i<=n; i++)
    13         d+=log10(i)    ;
    14         printf("%d
    ", (int)d+1) ;
    15     } 
    16     return 0 ;
    17 }
  • 相关阅读:
    iphone自动识别电话以及变色的解决
    chrome浏览器模拟微信
    获取一个图片的真实宽高
    iview插件
    vue aixos请求json
    ajax请求文件流下载
    检测打开设备
    轮播图
    rem适配
    easyui月份插件如何监听
  • 原文地址:https://www.cnblogs.com/soTired/p/4634354.html
Copyright © 2011-2022 走看看