BOJ:整数平方根[2417]
4022 ワード
ソース:[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
改善
Reference
この問題について(BOJ:整数平方根[2417]), 我々は、より多くの情報をここで見つけました https://velog.io/@kha117/BOJ-정수-제곱근-2417テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol