关于如何确定阶乘结果的位数呢,就是位数x可用由 10^(x-1)≤n!≤10^x,再取对数获得。
最开始做的时候想法很简单,就是用个循环,因为log(n!)=log1+log2+。。。。。。+logn,所以加起来就好了。结果一提交,就是 time limit exceeded。于是就上网上去查找计算阶乘的其他方法,就找到了斯特灵公式。之后就是在纸上演算怎么样才能把这个式子表示出来了。
#include<iostream>
#include<math.h>
using namespace std;

int main()
{
    //N表示用户想输入几次,i为计数器
    int N,i;
    cin>>N;
    double in;
    double out;
    for(i=0;i<N;i++)
    {
        cin>>in;
        //斯特灵公式不适应1的情况,因此单独考虑
        if(in==1)
            cout<<1<<endl;
        else
        {
            //这就是斯特灵公式,“n!≈sqrt(2πn)(n/e)^n”
            //而求阶乘结果的位数x可用由 10^(x-1)≤n!≤10^x,再取对数获得。
            //因此利用log的性质写出了下面的式子
            //acos为反余弦,2*acos(0.0)为π
            //exp(1.0)是为了得到e,这个式子就是e^1
            out=(log10(sqrt(4*acos(0.0)*in))+in*(log10(in)-log10(exp(1.0))))+1;
            cout<<(int)out<<endl;
        }
    }
    return 0;
}

转载于:https://blog.51cto.com/wingstudy/323851

北大oj-1423- Big Number相关推荐

  1. 航电oj:Big Number

    **航电oj:Big Number ** #题目描述 #给你数字n 让你输出你n!的位数 有多少位 #我打表不过 自己算阶乘也不行 log10 也不行 用一个不认识的公式就可以了 数学不好匿了匿了 # ...

  2. 北大OJ百练——4073:最长公共字符串后缀(C语言)

    刚刚看到一道北大的OJ题,很简单的一道题.原题如下(偷个懒,直接截图): 看完这道题,我想大家都和我一样觉得这道题很简单,事实也是如此,毕竟通过率很高. 我先来说一下我的思路吧.我是想先把这些所有的字 ...

  3. POJ 1423 Big Number

    题目连接:http://poj.org/problem?id=1423 #include <cmath> #include <queue> #include <stack ...

  4. 北大OJ百练——3179:最长单词(C语言)

    废话不多说,先来上题目: OJ的这题关键在于如何计算我所选择的开始位置和结束位置.我用的方法是有4个参数来存储起来,start, buffStart, lenth, maxLenth. start: ...

  5. 北大OJ百练——4074:积水量(C语言)

    前言: 最近感觉算法是一个很重要的东西,于是又把以前的OJ捡起来做做了,看到一题叫做积水量的题目,通过率是100%,虽然说是没有什么挑战,不过很久没写OJ了,让自己进入状态也不错的. 描述: 凹凸不平 ...

  6. 北邮OJ 84. Single Number

    84. Single Number 时间限制1000 ms    内存限制 65536 KB     题目描述 Given an array with N  integers where all el ...

  7. Leet Code OJ 202. Happy Number [Difficulty: Easy]

    题目: Write an algorithm to determine if a number is "happy". A happy number is a number def ...

  8. Leet Code OJ 263. Ugly Number [Difficulty: Easy]

    题目: Write a program to check whether a given number is an ugly number. Ugly numbers are positive num ...

  9. pek (北大oj)3070

    思路:矩阵快速幂, 二分加速 #include<cstdio> #include<cstring> #define ll long long #define mod 10000 ...

  10. 北大OJ百练——2721:忽略大小写比较字符串大小

    这题很简单,就是一个大小写转换的算法,可能有一个函数专门做这个事,大家可以查查,我想应该是有的. 那么我的代码思路就是一个个去比较,不管它是大写字母还是小写字母,都一并把它们都专成小写字母,再去比较. ...

最新文章

  1. SAP COR2下达工单,报错 System status APNG is active 之对策
  2. major头文件_JPEG头文件结构及组成
  3. boost::range_reference相关的测试程序
  4. [译]How to make searching faster
  5. Eclipse 答疑:Eclipse 如何设置 Java 代码自动提示和自动补全?
  6. uestc 方老师的分身 III 拓扑排序
  7. 原创 Spark go nsx很可爱的 公众号 vSAN 文章合集
  8. Zemax操作--2(单透镜和双胶合透镜优化)
  9. 牛客网sql练习题解(34-42)
  10. 咨询系列主题:当我们在谈论业务架构的时候我们在谈论什么
  11. CSDN-JayChou测试
  12. deepin/ubuntu 网易云解锁 UnblockNeteaseMusic
  13. OSPF多实例路由防环检测功能介绍
  14. 软件推荐:强力卸载软件HIBIT
  15. python grad_torch.autograd.grad()函数用法示例
  16. R语言随机森林报错The response has five or fewer unique values. Are you sure you want to do regression原因及解决办法
  17. 单招考计算机一般考什么科目,单招考试考什么内容 单招都考什么科目
  18. 玩转STM32F0 Value Line Discovery 之 点亮LED
  19. windows10进入/退出管理员账户(Administrator)方法
  20. 阿里P7测试员晒工资条,看完狠狠扎我心

热门文章

  1. Pixel 3a 开箱及 Google Fi 服务评测视频
  2. 在js中通过location.href方式跳转页面并在路径上传递参数中文乱码解决
  3. LibreOJ 6283 数列分块入门 7(区间加区间乘区间求和)
  4. Android界面布局基本属性
  5. 用Sql Server 2000的数据库备份来还原Sql Server 2005中的数据库
  6. Spring 的 init-method 和 destory-method
  7. vue程序中组件间的传值方式
  8. 【沫沫金】Sql子查询Not In 无结果原因
  9. 诺基亚成功转型:引领新一代5G技术 布局物联网
  10. OSChina 周日乱弹 —— 感到孤单了怎么办?