题面
题目描述
使得 xx达到或超过 n 位数字的最小正整数 x 是多少?
输入输出格式
输入格式:
一个正整数 n
输出格式:
使得 xx 达到 n 位数字的最小正整数 x
输入输出样例
输入样例#1:
11
输出样例#1:
10
说明
n<=2000000000
题解
简单题。。。。
数学题。。。。
位数−1=logxx10=xlogx10
直接二分即可
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
long long n;
int main()
{
cin>>n;n--;
long long l=1,r=2000000000;
long long ans=r;
while(l<r)
{
long long mid=(l+r)>>1;
long double k=(1.0*mid*((long double)log10(mid)));
if(k>=1.0*n)ans=mid,r=mid;
else l=mid+1;
}
printf("%lld\n",ans);
return 0;
}

本文介绍了一种通过二分查找法解决特定数学问题的方法:找到使x^x达到指定位数的最小正整数x。文章给出了完整的C++代码实现,并解释了背后的数学原理。
&spm=1001.2101.3001.5002&articleId=78469662&d=1&t=3&u=cc4598f4a05c48afa3d56aa5b8416b40)
1543

被折叠的 条评论
为什么被折叠?



