洛谷(奇怪的函数)
(传送门)洛谷
题目描述:
我一看到这个题就懵逼了,一个数学题
下面给出数学计算公式:
我们根据题目意思,
xx>=10(n-1)
<=> lg(xx)>=lg(10(n-1)),同时进行对数运算
<=> x*lgx>=n-1,根据对数计算公式,不懂的可以参考高中数学必修一,指对幂函数。
下面附上完整代码:
#include<bits/stdc++.h>
using namespace std;
long long n,l,r,mid;
bool check(long long x)
{
return (x*log10(1.0*x)>=n);//根据公式
}
int main()
{
freopen("input.txt","r",stdin);
scanf("%lld",&n);
--n;//根据位数,比如10是两位数,但只需要10^1
l=0,r=2000000000;
while(l<=r)//二分的标准格式
{
mid=(l+r)/2;
if(check(mid)) r=mid-1;//注意是最小正整数,所以答案合法则应该将右边折半
else l=mid+1;
}
printf("%lld",l);
}