BOJ:整数平方根[2417]


ソース:[https://www.acmicpc.net/problem/2417]


質問する


整数を指定すると、整数の平方根を求めるプログラムが作成されます.

入力


最初の行は整数nを与える.(0 ≤ n < 2^63)

しゅつりょく


1行目に出力されるのはq^2≧nの最小音の整数qではない.

アイデア


入力した整数値と0の中間値を指定します.
中間値の平方値が入力した整数より小さい場合は、左側の値を中間値+1として指定します.
中間値の平方値が入力した整数より大きい場合は、右側の値を中間値-1として指定します.

コード#コード#


答えを誤る


n = int(input())

l, r = 0, n

while l < r:
    mid = (l + r) // 2
    if  mid ** 2 < n:
        l = mid + 1
    else:
        r = mid - 1
print(l)

改善


Clone

#1
n=int(input())
print(int(n**0.5)+1 if n**0.5%1!=0 else int(n**0.5))

#2 (이분탐색으로 푼 코드 아님)
from math import ceil

n = int(input())
q = ceil(n ** 0.5)
print(q)

ソース:https://m.blog.naver.com/be_ok91/222075257924


改善