首页 > 学院 > 开发设计 > 正文

HDU 1141 Factstone Benchmark 对数乱搞

2019-11-06 08:54:50
字体:
来源:转载
供稿:网友

题目:

http://acm.hdu.edu.cn/showPRoblem.php?pid=1141

题意:

有个公司研制计算机芯片,1960年发布4位的,1970年发布8位的,1980年发布16位的……每十年位数翻倍。假设芯片储存无符号整数,给定一个日期,问当年的最新芯片最大可以储存的阶乘是几的阶乘

思路:

实际就是求n! <= 2^x中的n,但显然这两个数的范围很大,不能直接表示,可以对两数同时取对数,就很简单了

#include <bits/stdc++.h>using namespace std;const int N = 210;int arr[N];int main(){ arr[0] = 4; for(int i = 1; i <= 25; i++) arr[i] = 2 * arr[i-1]; int n; while(scanf("%d", &n), n) { int tm = arr[(n-1960)/10]; double sum = 0.0; int res; for(int i = 1; ; i++) { sum += log(1.0*i) / log(2.0); if(sum <= tm) res = i; else break; } printf("%d/n", res); } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表