【问题描述】

Amtel已经宣布,到2010年,它将发行128位计算机芯片;到2020年,它将发行256位计算机;等等,Amtel坚持每持续十年将其字大小翻一番的战略。(Amtel于2000年发行了64位计算机,在1990年发行了32位计算机,在1980年发行了16位计算机,在1970年发行了8位计算机,并首先在1960年发行了4位计算机)

Amtel将使用新的标准检查等级——Factstone——来宣传其新芯片大大提高的能力。 Factstone等级被定义为这样的最大整数n,使得n!可以表示为一个计算机字中的无符号整数(比如1960年的4位计算机可表示3!=6,而不能表示4!=24)。

给出一个年份1960 ≤ y ≤ 2160,Amtel最近发布的芯片的Factstone等级是什么? 输入:

给出若干测试用例。每个测试用例一行,给出年份y。在最后一个测试用例后,给出包含0的一行。

输出:

对于每个测试用例,输出一行,给出Factstone等级。

方法1:直接求不大于2k-1的最大整数n!,这种方法极易溢出且速度慢;

方法2:采用对数计算,即根据

log2n!=log2n+log2(n-1)+...+log21<=log2(2k-1)<k

注:计算机中的log其实是ln。需要换底公式 logab=lna/lnb;

 1 /*
 2  * FactstoneBenchmark.cpp
 3  *
 4  *  Created on: 2016年3月2日
 5  *      Author: hoojjack
 6  */
 7
 8
 9 #include <stdio.h>
10 #include <math.h>
11 int main(){
12     int i,j,y;
13     double w,sum;
14     while(1==scanf("%d",&y)&&y){
15 //        w=log(4.0);
16 //        w=2.0;
17         //计算机中的log 是数学中的ln 而不是以10为底数的取对数,所以如果想表示成以2为底4的对数
18         //需要换底公式
19         w=log(4.0)/log(2.0);
20 //        printf("w=%lf\t",w);
21 //        printf("%lf\t",log(4)/log(2));
22         for(i=1960;i<=y;i+=10){
23             w*=2;
24         }
25 //        printf("w=%lf\t",w);
26         j=1;
27         sum=0.0;
28         while(sum<w){
29             sum+=(log((double) ++j)/log(2));
30
31         }
32         printf("number=%d\n",j-1);
33     }
34     return 0;
35 }

转载于:https://www.cnblogs.com/hoojjack/p/5239717.html

Factstone Benchmark相关推荐

  1. hdu 1141 Factstone Benchmark

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1141 题目描述: Factstone Benchmark Time Limit: 10000/500 ...

  2. 【ACM】杭电1141:Factstone Benchmark

    我觉得这道题 值得一写,是因为它用到了取对数的方法来处理数值过大的阶乘问题.这种方法应该熟练掌握. 分析: 问题实际上可以转化成一个不等式: n ! < 2 ^ n 即求使上述不等式成立的最大的 ...

  3. hdu1141 Factstone Benchmark(利用对数进行大数比较)

    这个题的意思就是求  N!<2^bit 两边同时取对数,得到    log(N!)<bit*log(2.0),变换形式得到   log(N!)/ log(2.0)<bit; log( ...

  4. Factstone Benchmark hoj 数学题

    /*题意是求满足n!<2^bit的最大n.只能题意太特么晦涩了. 然后可以转化一下.1*2*3...*n<2*2*2...*2. 则循环2^bit次.n=(2^bit)/(n-1)!. 每 ...

  5. Competitive Programming 3题解

    题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...

  6. AOAPC I: Beginning Algorithm Contests 题解

    AOAPC I: Beginning Algorithm Contests 题解 AOAPC I: Beginning Algorithm Contests (Rujia Liu) - Virtual ...

  7. 杭电OJ分类题目(2)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(2) HDU Water~~~ HDU 100 ...

  8. ICPC程序设计题解书籍系列之六:吴永辉:《算法设计编程实验》

    第1章 Ad Hoc问题 POJ2661 HDU1141 ZOJ2545 UVA10916 Factstone Benchmark[Ad Hoc] UVA10037 Bridge[贪心] POJ257 ...

  9. 杭电oj题目题型分类(转)

    1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...

最新文章

  1. 提高SQL执行性能方案:如何让你的SQL运行得更快
  2. html 并集选择器,CSS并集选择器
  3. Docker 命令详解(run篇)
  4. 51nod 1428 bzoj 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚
  5. springboot 添加 lombok 报错更新 版本号
  6. 给 Chrome浏览器 添加 Javascript小书签,查看当前页面全部加载的javascript文件及代码片段...
  7. (转)Spring整合Jpa
  8. 开源应用中心 | KodExplorer高效流畅云端存储协同办公新体验
  9. uniapp实现打印PDF文件
  10. oracle12c不使用cdb模式,Oracle 12c 使用Non-CDB来创建PDB
  11. Programming Ruby读书笔记
  12. Wavefront OBJ 转换成OpenGL ES使用的C/C++文件
  13. 更改Pycharm的配置文件的存放路径
  14. php多条件筛选前台功能,JavaScript前端数据多条件筛选功能实现代码
  15. CTF解题思路:图片隐写
  16. 为何沃比帕克模式无法复制?
  17. spring听课一点+组成原理心得
  18. 分布式存储HBASE原理学习
  19. springboot 事件监听器
  20. 由于我的BoBo日志需要天气内容,所以在这里留个脚印。

热门文章

  1. 登顶AI服务器全球第一后,浪潮发布AI系统浪潮元脑
  2. 说出你的需求,我们AI给你写代码 | MIT新研究
  3. DeepMind和Unity合作,创建虚拟世界来训练AI
  4. 小鹏汽车首款量产车开售:搭载自动驾驶应用,补贴前售价20万起
  5. 如何让手机快速运行AI应用?这有份TVM优化教程
  6. 9个月一迭代,比特大陆量产AI芯片想落地于这三个场景
  7. Data Structure_数组_栈_队列_链表_霍夫曼
  8. apache、nignx等日志分析工具
  9. 纯Java代码 图片压缩
  10. 【转】php需要掌握的东西