【题目描述】
求出使得X^X达到或超过N位数字的最小正整数X是多少。
【输入描述】
输入一个正整数N。
【输出数据】
输出使得X^X达到或超过N位数字的最小正整数。
【输入样例】
11
【输出样例】
10
【数据范围及提示】
N <= 2000000000。
源代码: #include<cstdio> #include<cmath> //包含trunc()以及log()。 int n,ans,left=1,right=250000000; //题中所给的最大数据经验证不会超过此值。 int main() //二分答案。 { scanf("%d",&n); while (left<=right) { int t=(left+right)>>1,num=trunc(t*(log(t)/log(10))+1); if (num>=n) { right=t-1; ans=t; } else left=t+1; } printf("%d",ans); return 0; } /* C++取整函数: 1.向上取整:ceil() 2.向下取整:floor() 3.截取整数:trunc() 4.四舍五入:(int)(N+0.5) */ /* 位数: ln(N) C++程序中表示为:log(N)/log(10)+1。 延伸: 以x为底N的对数在C++程序中表示为:log(N)/log(x)。 */
时间: 2024-10-07 00:35:19