본문 바로가기

삼성전자 알고리즘/정올

3. 1240 : 제곱근

문제 출처 : http://www.jungol.co.kr/xpert/viewp.php?bo_table=sm_low&id=1240&alcate=&mtitle=%EB%8B%A8%EA%B3%84%EB%B3%84%ED%95%99%EC%8A%B5&al=001002&altitle=%EC%A4%91%EA%B8%89(Adv.Pro.)&alname=&altag=&page=1

 

정올::Xpert

임의의 정수 N이 주어졌을 때 N의 양의 제곱근의 정수부분을 출력하는 프로그램을 작성하라. 양의 제곱근이란 다음을 만족하는 수 X 를 뜻한다.   N = X2 (X≥0) 주의 : sqrt와 같은 함수를 사용하지 말아야 하며 stdio.h 와 iostream 등 입출력 헤더에 있는 함수만이 사용가능한다. 이를 어길 경우 0점 처리를 한다.

www.jungol.co.kr

/**************************************************************
    Problem: 1240
    User: hbrojun.kim
    Language: C++
    Result: Success
    Time:2 ms
    Memory:1740 kb
****************************************************************/
 
 
//http://melonicedlatte.com/algorithm/2018/03/04/022437.html
//바빌로니아 법 http://blog.daum.net/_blog/BlogTypeView.do?blogid=0Xrxs&articleno=41
#include <iostream>
using namespace std;
 
unsigned long long int Babilonia(unsigned long long int input, double x){
    for (int i = 0; i < 100000; i++) { x = (x + (input / x)) / 2; }
    return x;
}
int main(){
    unsigned long long num;
    scanf("%llu", &num);
    cout << Babilonia(num, 2) << endl;
    return 0;
}

바빌로니아 법을 아느냐 모르냐로 갈리는 문제.

 

구현 이슈가 아니라면 math.h에 있는 sqrt() 함수를 사용하길 바람.

'삼성전자 알고리즘 > 정올' 카테고리의 다른 글

7. 1169 : 주사위 던지기1[DFS]  (0) 2019.06.16
5. 1078 : 저글링 방사능 오염  (0) 2019.06.16
4. 1661 : 미로 탈출 로봇  (0) 2019.06.16
2. 1161 : 하노이탑1  (0) 2019.05.09
1. 1102 스택 (stack)  (0) 2019.05.09