1 条题解
-
0
C++ :
#include <cstdio> #include <cmath> /* 位数(x^x) = floor(x * log10(x)) + 1 ;找最小 x 使 >= n */ int main(){ long long n; if(scanf("%lld", &n) != 1) return 0; long long lo = 1, hi = n + 2, ans = -1; while(lo <= hi){ long long mid = lo + (hi - lo) / 2; double lg = (double)mid * log10((double)mid); long long digits = (long long)floor(lg) + 1; if(digits >= n){ ans = mid; hi = mid - 1; } else lo = mid + 1; } printf("%lld\n", ans); return 0; }
- 1
信息
- ID
- 2787
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者