题解 UVA10023【Square root】
题意
给 $Y$,求 $\sqrt{Y}$,保证 $\sqrt T\in \Bbb{N}$。多组数据。
$Y\le 10^{10^3}$。
思路
这是一篇 Python 题解,如果您想看 C++ 请移步其他题解,此题解仅用于告诫后人。
这道题很显然的高精度,我们可以想到使用 Python。
Python 自带了 math.sqrt 函数,但是它可能处理不了这么大的数据范围,于是我们可以二分。
二分边界可以设为 $[2^{\left\lfloor\log Y\right\rfloor},2^{\left\lceil\log Y\right\rceil}]$,时间复杂度 $O(\log Y)$。
然后你写好了,一交,RE?
你又看了看题面,发现了这样一句话:

每组数据由空行隔开。
于是你读完空行再交,WA?
我们还可以发现题面要求每组输出间用空行隔开,而且最后不需要使用空行。
于是你终于过了。
代码:
t=int(input())
for q in range(t):
n=input()
m=int(input())
l=0
r=1
while(r*r<=m):
l=r
r=r*2
while(l+1<r):
mid=(l+r)//2
if(mid*mid<=m):
l=mid
else:
r=mid
print(l)
if q<t-1:
print()
再见 qwq~

浙公网安备 33010602011771号