题目描述:
使得Xx达到或超过N位数字的最小正整数X是多少?
输入格式:
输入一个正整数N。
输出格式:
输出使得Xx达到或超过N位数字的最小正整数X。
样例输入:
11
样例输出:
10
提示:
N<=20 000 000 000。
计算位数可以用log以10为底计算。
90的位数 (int)log10(90)+1 = 2
这题数据比较大,用long long
xx的位数公式:(long long)(x*log10(x)+1)
时间限制: 1000ms
空间限制: 256MB
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int N=2e9;
long long er(long long n){
return n*log10(n)+1;
}
int main(){
long long k;
cin>>k;
long long l=1,r=N,mid=0,max=0;
while(l<=r){
mid=(l+r)/2;
if(er(mid)>=k){
r=mid-1;
max=mid;
}else{
l=mid+1;
}
}
cout<<max;
return 0;
}