2017.8.11

来源:互联网 发布:网络爬虫的目的和意义 编辑:程序博客网 时间:2024/06/03 07:48

今天学习了二分思想 

二分   就是把一串有序数列一直对半分  每次 可以去掉一半  时间复杂度为 log2n  是一种十分省时的算法

luogu2759

这题的意思就是求最小的x    使x^x达到或超过n位数字   

要求x^x的位数    根据数学上 的   就是   x*log10x  但是还要加1     与n比较   如果大了  说明  在左边一半  则去掉右边

代码附下:

#include<bits/stdc++.h>using namespace std;long long n;int la(int t){long long k=t;return double (k*log10(1.0*t))+1>=n;}int lala(){long long left=0,right=2000000000,mid;while (left+1<right)  {  mid=(left+right)/2;   if (la(mid)) right=mid;   else left=mid;    }if (la(left)) return left;  else return right;}int main(){cin>>n;cout<<lala();  return 0;  } 


原创粉丝点击