题解:SP245 SQRROOT - Square Root

yanxu_cn

2024-11-17 19:29:04

Solution

高精度……果断使用 Python。

但是这题很奇怪的点在于 Python 中直接计算 \sqrt{n} 会 RE,猜测原因是过大的数开方会爆精度。不过二分也够简单,果断二分。

二分的实现其实和 C++ 没什么大的差别。

t=int(input())
for i in range(t):
    n=int(input())
    l=0;r=10**400
    while l<=r:
        mid=(l+r)//2 # 务必使用 //,Python 中 / 返回的是浮点数,而浮点数会爆精度。
        a=mid*mid
        if a==n:
            print(mid)
            break
        elif a<n:
            l=mid+1
        else:
            r=mid-1