博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Factstone Benchmark
阅读量:7124 次
发布时间:2019-06-28

本文共 1250 字,大约阅读时间需要 4 分钟。

【问题描述】

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 
10 #include
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

 

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

你可能感兴趣的文章
爬取html生成pdf
查看>>
Restful API 设计(二)
查看>>
[pwn入门] 1. get函数缓冲区溢出
查看>>
Flutter要火!Dart你会了吗?
查看>>
雪花算法 - snowflake
查看>>
检测到目标URL存在Http Host头攻击漏洞
查看>>
一眼看穿
查看>>
【mySQL】left join、right join和join的区别
查看>>
线上CPU100%?看看这篇是怎么排查的!
查看>>
自己开发的在线视频下载工具,基于Java多线程
查看>>
提高云服务器安全等级的七个措施
查看>>
使用JavaScript ES6的新特性计算Fibonacci(非波拉契数列)
查看>>
JS面向对象的程序设计之继承的实现 - 原型链的注意点
查看>>
JustDoIt:立刻开始你的编程之旅
查看>>
Shell 脚本编写
查看>>
纹理集打包和动画转换工具Texture Merge的使用教程
查看>>
【响应式布局】initial containing block、viewport以及相关尺寸
查看>>
ajax在同一页面中同控制器不同方法中调用数据并异步刷新的实例
查看>>
代码性能调优“三十六”策
查看>>
面向云数据库,超低延迟文件系统PolarFS诞生了
查看>>