poj1423是一道纯数学题目,原题的意思是输入一个数1 <= n <= 10^7 ,即需要用long来存储n,然后输出它的阶乘结果的位数。

这道题目的数据庞大,达10^7,高精度模拟显然不行。因此n我们必须另外想方法。
 要知道一个数字的位数是多少,我们可以用log10函数求得。例如,对于一个数,N=10,10!=3628800,而log10(3628800)=6.559763033,那么只要将这个数向上取整,就是7,就是10!的位数。
于是我们可以得到 log10(n!)=log10(1*2*3…*n)=log10(1)+log10(2)+…+log10(n)
但是用将一个一个数累加明显很超时,所以不能采用这种方法。

《计算机程序设计艺术》中给出了另一个公式

n! = sqrt(2*π*n) * ((n/e)^n) * (1 + 1/(12*n) + 1/(288*n*n) + O(1/n^3))

π = acos(-1)

e = exp(1)

两边对10取对数

忽略log10(1 + 1/(12*n) + 1/(288*n*n) + O(1/n^3)) ≈ log10(1) = 0

得到公式

log10(n!) = log10(sqrt(2 * pi * n)) + n * log10(n / e)。

值得注意的是当n= 1的时候,输出结果为负,取整会为0。所以可以利用if语句来输出n= 1的情况。并且在log10(n!)的结果需要加1,再进行取整。

PS:反三角函数:asin(double) acos(double) atan(double);

自然数e=exp(1.0);

以下是源代码

#include <iostream>
#include <cmath>
using namespace std;
const double pi = acos(-1.0);
const double e = exp(1.0);
int main()
{int n;long num;cin >> n;for(int i = 0; i < n; i++){cin >> num;if(num == 1)cout << 1 << endl;elsecout << int (log10(sqrt(2 * pi * num)) + num * log10(num / e) + 1) << endl;      //在log10(n!)的结果加上1,并强制转换类型取整}return 0;
}

水题poj1423 解题报告相关推荐

  1. 无聊的活动/缘生意转(2018 Nova OJ新年欢乐赛B题)解题报告

    题目2(下面的太抓 我重新写了个背景 其他都一样) 无聊的活动 JLZ老师不情愿的参加了古风社一年一度的活动,他实在不觉得一群学生跳舞有什么好看,更不明白坐在身后的学生为什么这么兴奋(看小姐姐),于是 ...

  2. 21行代码AC_标题 Excel地址 2017年蓝桥杯真题(解题报告+通法)

    励志用更少的代码做更高效的表达 题目描述 Excel单元格的地址表示很有趣,它使用字母来表示列号. 比如, A表示第1列, B表示第2列, Z表示第26列, AA表示第27列, AB表示第28列, B ...

  3. 两道递推公式题的解题报告

    T1(阿牛的EOF牛肉串) 题意:一串由EOF三个字母组成的长度为\(n\)的字母串,不能出现连续的OO,求字符串种类数\(f[n]\) 答案:\(f[n]=2f[n-1]+2f[n-2]\) --① ...

  4. 美团点评2019年秋招部分编程题汇总 解题报告 Apare_xzc

    美团点评2019年秋招部分编程题汇总 企业独家授权 2020.8.7 Apare_xzc 网页链接:美团点评2019年秋招部分编程题汇总 1/7 [编程题] 图的遍历 给定一张包含N个点.N-1条边的 ...

  5. XTU新生赛B题 ABK 解题报告

    题目描述 ABK是一个比A+B还要简单的题目,给出两个整数A,B,求出A和B的第K大公约数. 输入 第一行是一个整数N(N ≤ 10000),表示样例的个数. 以后每行一个样例,为3个整数A,B,K ...

  6. 【网络流24题】解题报告:K、航空路线问题(最小费用最大流)

    [问题分析] 求最长两条不相交路径,用最大费用最大流解决. [建模方法] 把第i个城市拆分成两个顶点<i.a>,<i.b>. 1.对于每个城市i,连接(<i.a>, ...

  7. 【网络流24题】解题报告:C、最小路径覆盖问题(有向无环图最小路径覆盖)(最大流)

    C.最小路径覆盖问题(有向无环图最小路径覆盖)(最大流)[省选/NOI- ] 拆点最大流 [问题分析] 有向无环图最小路径覆盖,可以转化成二分图最大匹配问题,从而用最大流解决. [建模方法] 构造二分 ...

  8. 【网络流24题】解题报告:E 、圆桌问题(最大流求二分图多重匹配)

    E .圆桌问题(最大流求二分图多重匹配)[省选/NOI- ] 可以直观的想到,二分图的左边是单位,右边是桌子 由于题目的限制 每个单位只能在一个桌子坐一个人 所以我们就把每个单位向各个桌子连一道流量为 ...

  9. 【网络流24题】解题报告:A、飞行员配对方案问题(最大流求二分图最大匹配)

    A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] 题目链接 [问题分析] 二分图最大匹配问题. [建模方法] 在二分图的基础上增加源S和汇T. 1.S向X集合中每个顶点连一条容 ...

最新文章

  1. 从一次故障聊聊前端 UI 自动化测试
  2. 【超级大转载】常用的D3D变换相关函数
  3. C语言-程序运行效率总结及注意事项
  4. 这家研究院太年轻,竟跟世界级选手“叫板”
  5. 【luogu P3384 树链剖分】 模板
  6. 华为P40系列发布时间或敲定:继续在3月26日亮相?
  7. 零基础学python书籍-5本好书------Python零基础到入门必读Python书籍!
  8. word打开提示“所用加密类型不可用”
  9. Java程序中调用Python脚本的方法
  10. net core 模型绑定与之前版本的不同-FromBody 必须对应Json格式
  11. structs 中过滤器问题
  12. SOUI自定义控件(3)
  13. elasticsearch-01
  14. murmur3 php,murmur: 更快更好的哈希函数
  15. python3.7爬虫
  16. 拉普拉斯变换的物理意义是什么
  17. SpringBoot 在main或者普通类中条用service接口
  18. openGauss数据库开发指导手册(下)
  19. oracle甲骨文公布2019年1月java收费明细
  20. QSetting 类使用

热门文章

  1. 分析界面,在全国公共资源交易平台使用java获取全国的招投标数据接口
  2. Shiro 通过配置Cookie 解决多个二级域名的单点登录问题。
  3. p6000 深度学习_英伟达推Quadro新显卡,支持VR、深度学习等技术
  4. 春风桃李花开夜,秋雨梧桐叶落时——python面向对象三大特征(封装、继承、多态)
  5. Outlook 2013 pst/ost邮件数据文件迁移实现
  6. Fabric区块链开发详解
  7. 开发者都应该知道的 Centos/Docker/Nginx/Node/Jenkins 操作(长文,建议收藏)
  8. 互联网晚报 | 2月13日 星期日 | 上汽荣威宣布多款新能源车型涨价;高亭宇破奥运会纪录夺金;演员总片酬不得超过制作成本40%...
  9. Nature:13个维度,手把手教“研究er”如何做学术报告
  10. 面试时,碰到职场“送命题”该怎么回答?送上这些有求生欲的答案~