您的位置:首页 > 其它

整数性质和精度测试

2014-04-29 13:02 204 查看
【题目】:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=612

【题意】:

求X^X(X的X次方)达到n位时最小x的值。
【分析】:首先我们可以知道位数和X的大小成正相关。
我们不可能枚举这个x,那么就要二分。
然后怎么知道x^2有多少位呢?

k=(x+0.0)*log10(x)+1 其实就是10的位数

输入】:多组测试数据,每组数据占一行包含一个整数n,1<=n<=100000000.
【代码】:


/*http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=612
关键是对数处理位数
*/
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <vector>
#define eps 1e-15
#define LL long long
#define INF 1e9
using namespace std;

LL F(LL x){
if (x==1) return 1;
double k=(x+0.0)*log10(x);
return (LL)k+1;
}
LL n;
int main(){
//    freopen("out.txt","w",stdout);
while(cin>>n){
LL l=0,r=INF,times=0;
while(l<r && times<70){
times++;
LL m=l+(r-l)/2;
if (F(m)>=n) r=m;else l=m+1;
}
cout<<l<<endl;
}
return 0;
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: