Factstone Benchmark
【问题描述】
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相关推荐
- hdu 1141 Factstone Benchmark
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1141 题目描述: Factstone Benchmark Time Limit: 10000/500 ...
- 【ACM】杭电1141:Factstone Benchmark
我觉得这道题 值得一写,是因为它用到了取对数的方法来处理数值过大的阶乘问题.这种方法应该熟练掌握. 分析: 问题实际上可以转化成一个不等式: n ! < 2 ^ n 即求使上述不等式成立的最大的 ...
- hdu1141 Factstone Benchmark(利用对数进行大数比较)
这个题的意思就是求 N!<2^bit 两边同时取对数,得到 log(N!)<bit*log(2.0),变换形式得到 log(N!)/ log(2.0)<bit; log( ...
- Factstone Benchmark hoj 数学题
/*题意是求满足n!<2^bit的最大n.只能题意太特么晦涩了. 然后可以转化一下.1*2*3...*n<2*2*2...*2. 则循环2^bit次.n=(2^bit)/(n-1)!. 每 ...
- Competitive Programming 3题解
题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...
- AOAPC I: Beginning Algorithm Contests 题解
AOAPC I: Beginning Algorithm Contests 题解 AOAPC I: Beginning Algorithm Contests (Rujia Liu) - Virtual ...
- 杭电OJ分类题目(2)
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(2) HDU Water~~~ HDU 100 ...
- ICPC程序设计题解书籍系列之六:吴永辉:《算法设计编程实验》
第1章 Ad Hoc问题 POJ2661 HDU1141 ZOJ2545 UVA10916 Factstone Benchmark[Ad Hoc] UVA10037 Bridge[贪心] POJ257 ...
- 杭电oj题目题型分类(转)
1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...
最新文章
- 提高SQL执行性能方案:如何让你的SQL运行得更快
- html 并集选择器,CSS并集选择器
- Docker 命令详解(run篇)
- 51nod 1428 bzoj 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚
- springboot 添加 lombok 报错更新 版本号
- 给 Chrome浏览器 添加 Javascript小书签,查看当前页面全部加载的javascript文件及代码片段...
- (转)Spring整合Jpa
- 开源应用中心 | KodExplorer高效流畅云端存储协同办公新体验
- uniapp实现打印PDF文件
- oracle12c不使用cdb模式,Oracle 12c 使用Non-CDB来创建PDB
- Programming Ruby读书笔记
- Wavefront OBJ 转换成OpenGL ES使用的C/C++文件
- 更改Pycharm的配置文件的存放路径
- php多条件筛选前台功能,JavaScript前端数据多条件筛选功能实现代码
- CTF解题思路:图片隐写
- 为何沃比帕克模式无法复制?
- spring听课一点+组成原理心得
- 分布式存储HBASE原理学习
- springboot 事件监听器
- 由于我的BoBo日志需要天气内容,所以在这里留个脚印。