JUNGOL...102
Intermediate_Coder/분할정복/제곱근
문제
임의의 정수 N이 주어졌을 때 N의 양의 제곱근의 정수부분을 출력하는 프로그램을 작성하라.
양의 제곱근이란 다음을 만족하는 수 X 를 뜻한다.
N = X2 (X≥1)
[ 주의 !!! ]
sqrt와 같은 함수를 사용하지 말아야 하며
stdio.h 와 iostream 등 입출력 헤더에 있는 함수만이 사용가능하다.
이를 어길 경우 0점 처리한다.
입력 형식
입력에는 263-1 이하의 양의 정수 N이 입력된다
출력 형식
N의 제곱근의 정수부분을 출력한다.
입력 예
8 | 16
출력 예
2 | 4
Hint!
hancomc@hotmail.net
SquareRoot.h
#include <iostream>
class SquareRoot : public Base
{
private:
long long GetSquareRoot(long long num);
};
SquareRoot.cpp
void SquareRoot::Code()
{
int num;
std::cin >> num;
std::cout << GetSquareRoot(num);
}
long long SquareRoot::GetSquareRoot(long long num)
{
long long x = num;
for (int i = 0; i < 20; i++)
{
x = (x + num / x) / 2;
}
return x;
}
실행 결과 Accepted(50)
원인 루트 값을 찾을 때 반복 횟수가 부족해서 발생하는 것으로 보인다.
처리 방법 반복 회수를 늘린다.
NadanKim/CodingTest_JUNGOL: JUNGOL 코딩 테스트를 위한 저장소 (github.com)
NadanKim/CodingTest_JUNGOL
JUNGOL 코딩 테스트를 위한 저장소. Contribute to NadanKim/CodingTest_JUNGOL development by creating an account on GitHub.
github.com