链接:传送门

题意:一个人自命不凡,他从1960年开始每10年更新一次计算机的最长储存长数。1960年为4位,每10年翻一倍。给出一个年份y,问这一年计算机可以执行的n!而不溢出的最大n值

思路:如果直接比较 2^x - 1 < n! 是一定会溢出的,所以不妨对左右取对数,使之变为 x*log10(2) < log10(n!) 。

使用斯特林公式优化一下n!的计算就能解决这个问题了。


/*************************************************************************
> File Name: poj2661.cpp
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年04月26日 星期三 22时52分03秒
************************************************************************/ #include<iostream>
#include<cstdio>
#include<cmath>
using namespace std; #define PI 3.1415926535
int y , n;
int main(){
double t = log10(2);
while(~scanf("%d",&y) && y){
int d = (y-1960)/10;
int x = pow(2.0,d)*4;
double tmp;
for(n = 1; 1 ; n++){
tmp = log10( sqrt(2*PI*n)) + n*log10(n*1.0/exp(1));
if(x*t<tmp) break;
}
printf("%d\n",n-1);
}
return 0;
}

最新文章

  1. Android ButterKnife配置使用
  2. 【Bootstrap Demo】入门例子创建
  3. 用Fragment制作的Tab页面产生的UI重叠问题
  4. treepanel加滚动条
  5. 策略模式代替大量的if else
  6. php 扩展 redis
  7. ajax开发框架和XMLhttpRequest、responseText、responseXml和JSON的应用
  8. [Webpack 2] Grouping vendor files with the Webpack CommonsChunkPlugin
  9. .NET设计模式(10):装饰模式(Decorator Pattern)
  10. 一篇旧文章,结合汇编探索this指针
  11. java敏感词过滤
  12. 940B Our Tanya is Crying Out Loud
  13. DRC错误解决办法
  14. SSL、数字签名、CA 工作原理通俗描述
  15. 2018SDIBT_国庆个人第三场
  16. Oracle SQL语句执行步骤
  17. li分两列显示
  18. DFS-深度优先遍历
  19. R语言外部数据读取
  20. 【BZOJ1412】[ZJOI2009]狼和羊的故事 最小割

热门文章

  1. 区分JAVA创建线程的几种方法
  2. Linux下MATLAB安装及使用
  3. nodejs-路由(待补充)
  4. 洛谷 P1131 [ZJOI2007]时态同步
  5. Android 开源项目android-open-project解析之(二) GridView,ImageView,ProgressBar,TextView
  6. 【分享】GEARS of DRAGOON 1+2【日文硬盘版】[带全CG存档&amp;amp;攻略+SSG改动+打开存档补丁]
  7. 安卓项目开发实战(1)--首页顶部菜单BAR实现
  8. DAC0832、led、蜂鸣器
  9. oracle实现查询每个部门的员工工资排在前三的员工的基本信息具体举例
  10. Bootstrap警告