关闭

poj-2661-Factstone Benchmark

332人阅读 评论(0) 收藏 举报
分类:

解题思路:在1960年,字的大小是4位,以后每十年翻一番,就意味着,y年的字的位数为k=pow(2,(y-1960)/10),而k位的无符号整数是pow(2,k)-1,n!要小于等于pow(2,k)-1。直接进行求解容易溢出和超时,所以采用对数运算。n!<=pow(2,k)-1,两边取对数,log2(n)+log2(n-1)+...+log(1)<k。

c++代码如下:

<pre name="code" class="cpp">#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	int k,Y,i;
	double sum,y;
	while(cin>>y &&y)
	{
		k=pow((double)2,(y-1960)/10+2);//计算y年时的计算机位数k,注意pow()中的参数都要是double型 
		sum=0;//注意每次循环都要重新赋值0,不能放在循环外。 
		for(i=1;sum<k;i++)
			sum+=log((double)i)/log((double)2);	//C++中log()表示ln,没有log2的函数,要用换底公式,即log2(n)=ln(n)/ln(2) ;注意log()中的参数都要是double型 
		cout<<i-2<<endl;	
	}
	return 0;	
	
}



解题思路:在1960年,字的大小是4位,以后每十年翻一番,就意味着,y年的字的位数为k=pow(2,(y-1960)/10),而k位的无符号整数是pow(2,k)-1,n!要小于等于pow(2,k)-1。直接进行求解容易溢出和超时,所以采用自然对数运算。n!<=pow(2,k)-1,两边取自然对数,ln(n)+ln(n-1)+...+ln(1)<kln2。

C语言代码如下;

#include<stdio.h>
#include<math.h>
int main()
{
	int y,Y,i;
	double sum,k;
	while(scanf("%d",&y)==1 &&y)
	{
		k=log(4);//即2ln2; 
		for(Y=1960;Y<=y;Y+=10)
			k*=2;      //当Y=1960时k为4ln2; 依次类推 
		sum=0;
		i=1;
		while(sum<k)
			sum+=log((double)++i);//ln(n)+...+ln(1); 
		printf("%d\n",i-1);
	}
	return 0;
}



1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

大数据领域的Benchmark介绍

一、Benchmark简介 Benchmark是一个评价方式,在整个计算机领域有着长期的应用。正如维基百科上的解释“As computer architecture advanced, it beca...
  • u012050154
  • u012050154
  • 2016-02-24 15:12
  • 5104

使用Apache Benchmark做压力测试遇上的5个常见问题

文章转载自:http://mo2g.com/view/50/ 这一篇文章主要记录我在使用Apache Benchmark(一下检测ab)做网站压力测试的过程中,遇到的一些问题以及解决...
  • sangyongjia
  • sangyongjia
  • 2015-10-13 10:25
  • 1425

benchmark测试IO性能

benchmark测试  常用Androbench 的Micro项来测试。 可以选择测试/data还是/sdcard分区  和lmdd同样设置CPU,以及关闭LPM shell “echo 0...
  • yuzaipiaofei
  • yuzaipiaofei
  • 2016-03-15 17:16
  • 2337

算法学习【16】—— 1119. Factstone Benchmark

题目来源:http://soj.me/1119 1119. Factstone Benchmark Constraints Time Limit: 1 secs, M...
  • BetaBin
  • BetaBin
  • 2012-07-26 11:21
  • 2363

UVA10916 Factstone Benchmark

Problem B: Factstone Benchmark Amtel has announced that it will release a 128-bit computer chip by ...
  • yeyeyeguoguo
  • yeyeyeguoguo
  • 2014-07-18 21:19
  • 303

【NOIP2015】洛谷2661 信息传递

dfs
  • sdfzyhx
  • sdfzyhx
  • 2016-10-27 20:21
  • 272

【SSLGZ 2661】廉价最短路径

问题描述 是由一组顶点和一组边组成的。一条边连接两个顶点。例如,图1表示了一个有4个顶点V、5条边的图。图中,每条边e是有方向的,方向从起点到终点,并且每条边都有价值。用整数0,1,…,m-1可以表...
  • Fallen_Angel001
  • Fallen_Angel001
  • 2017-04-22 16:29
  • 184

Sicily 2661. Walking

2661. Walking Constraints Time Limit: 1 secs, Memory Limit: 256 MB Description In ...
  • u012925008
  • u012925008
  • 2015-03-13 00:28
  • 294

LM2661资料

  • 2008-07-31 15:42
  • 297KB
  • 下载

【NOIP2015】洛谷P2661 信息传递(tarjan)

题目描述有n个同学(编号为1到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学。游戏开始时,每人都只知道自己的生日。之后每一轮中...
  • Loi_Meiko
  • Loi_Meiko
  • 2016-11-07 16:38
  • 341
    个人资料
    • 访问:120579次
    • 积分:3215
    • 等级:
    • 排名:第12284名
    • 原创:204篇
    • 转载:15篇
    • 译文:0篇
    • 评论:15条
    最新评论