題目如圖 看到階乘馬上想到斯大林公式
防止溢出對兩邊取對數
代碼如下
import math
def solve(x):
l, r = 1, int(1e12)
aim = x * math.log(x)
mid = 0
while (l < r):
mid = (l + r) // 2
value = const_ + mid * (math.log(mid) - 1) + 0.5 * math.log(mid)
#print(l,r)
#print(value,aim)
if (value < aim):
l = mid + 1
else:
r = mid
return r
pi = 3.1415926
const_ = 0.5 * math.log(2 * pi)
x = int(input())
print(solve(x))