hdu1141(二进制数位,二分,打表)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1141
题意:××公司是制造computer的,1960年它造的computer是4bit的,之后每10年翻倍;
有一个衡量computer的标准,就是它最大可以存下n!(无符号位),那么它就是n级;
求x年时该公司的电脑为几级(1960<= x <=2160);
思路:2160年时computer是4×pow(2, 20)=4194304bit,那么能储存的最大数大概为pow(2, 4194304)数量级,直接暴力求n显然是不可能的;
我们可以打表求n!二进制表示有多少位,再二分即可;
用a(n)表示n!二进制多少位;
有:a(n!) = (int)log2(n!) + 1 ;
由对数运算可得:a(n!) = int(log2(1)+log2(2)...+log2(n)) + 1;
http://www.cnblogs.com/geloutingyu/p/5978149.html (10进制数位求法及证明(hdu1018),与二进制类似,这里的二进制就不再证明啦)
代码:
#include <iostream>
#include <math.h>
#include <algorithm>
#include <stdio.h>
#define MAXN 400000
using namespace std; int a[MAXN]; void meter(void){ //**打表,数组a中储存下标i对应阶乘的二进制位数
double cnt = ;
for(int i=; i<MAXN; i++){
cnt += log2(i);
a[i] = (int)cnt+;
}
} int main(void){
meter();
int n;
while(scanf("%d", &n)&&n!=){
int cnt = (n-)/;
int ans = *pow(, cnt);
int pos = lower_bound(a, a+MAXN, ans)-a;
if(a[pos]>ans){
pos--;
}
printf("%d\n", pos);
}
return ;
}
hdu1141(二进制数位,二分,打表)的更多相关文章
- bzoj3209 花神的数论题 (二进制数位dp)
二进制数位dp,就是把原本的数字转化成二进制而以,原来是10进制,现在是二进制来做,没有想像的那么难 不知到自己怎么相出来的...感觉,如果没有一个明确的思路,就算做出来了,也并不能锻炼自己的能力,因 ...
- BZOJ4556:[TJOI\HEOI2016]字符串(后缀数组,主席树,二分,ST表)
Description 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为n的字符串s,和m个问题.佳媛姐姐必须正确回答这m个问题,才能打开箱 ...
- BZOJ3166 [Heoi2013]Alo 【可持久化trie树 + 二分 + ST表】
题目 Welcome to ALO ( Arithmetic and Logistic Online).这是一个VR MMORPG , 如名字所见,到处充满了数学的谜题. 现在你拥有n颗宝石,每颗宝石 ...
- [BZOJ4310] 跳蚤 - 后缀数组,二分,ST表
[BZOJ4310] 跳蚤 Description 首先,他会把串分成不超过 \(k\) 个子串,然后对于每个子串 \(S\) ,他会从 \(S\) 的所有子串中选择字典序最大的那一个,并在选出来的 ...
- HDU5726 GCD(二分 + ST表)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5726 Description Give you a sequence of N(N≤100, ...
- hdu5878 I Count Two Three(二分+ 打表)
题目链接:hdu5878 I Count Two Three 题意:给出一个整数n, 找出一个大于等于n的最小整数m, 使得m可以表示为2^a * 3^b * 5^c * 7^d. 题解:打表预处 ...
- ZJOI2018 胖 二分 ST表
原文链接https://www.cnblogs.com/zhouzhendong/p/ZJOI2018Day2T2.html 题目传送门 - BZOJ5308 题目传送门 - LOJ2529 题目传送 ...
- BZOJ 5308 [ZJOI2018] Day2T2 胖 | 二分 ST表
题目链接 LOJ 2529 BZOJ 5308 题解 这么简单的题 为什么考场上我完全想不清楚 = = 对于k个关键点中的每一个关键点\(a\),二分它能一度成为哪些点的最短路起点(显然这些点在一段包 ...
- BZOJ3473:字符串(后缀数组,主席树,二分,ST表)
Description 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? Input 第一行两个整数n,k. 接下来n行每行一个字符串. Output 一 ...
随机推荐
- FineUI第九天---表单验证
表单验证 步骤: 1.比如为TextBox设置Required=”true”或者ShowRedStar=”true”两个属性,表示此输入为必填项,并且在标签的后面显示一个红色的星号提示. 2.Vali ...
- HDU 1058 Humble Numbers(离线打表)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058 解题报告:输入一个n,输出第n个质因子只有2,3,5,7的数. 用了离线打表,因为n最大只有58 ...
- iOS开发——高级篇——Parse 教程:网络后台基础
本教程已针对Swift, iOS 8.3, Xcode 6.3及最新的Parse SDK(1.7.1版本)更新. 网络后台支持可以为你的App添加许多崭新的功能:不论是数据同步,社交分享,还是云端存储 ...
- phpcms采集地址中为相对路径解决方法
1.修改数据库v9_collection_node,增加两个字段replace_from,replace_to(varchar(200)) 2./phpcms/modules/collection/t ...
- 怎么安装MYSQL5.0的JDBC驱动
1.下载mysql for jdbc driver. http://dev.mysql.com/downloads/connector/j/3.1.htmlMySQL Connector/J is ...
- JNative library not loaded, sorry ! win7 64位系统
java调用动态链接库时,使用myeclipse或者其他IDE工具时,针对于web程序,会报这样的错误: java.lang.IllegalStateException: JNative librar ...
- js手机网页跳转
在网页头部加入如下代码: <script type="text/javascript"> function browserRedirect() { var sUserA ...
- 【Networking】Thrift and gRPC
参考资料: http://doc.oschina.net/grpc?t=60138 http://www.grpc.io/ https://thrift.apache.org/ https://git ...
- [20160731]read a file and print it on the screen
//read a file and print it on the screen import java.io.*; public class MyPrintStreamTest2{ public s ...
- MDI窗体
1.设置父窗体 使用MDI窗体,需要先将父窗体的IsMdiContainer属性设置为True 2.生成用于MDI子窗体的窗体 1 frmTemp f1 = new frmTemp(); f1.Tex ...