2배수

값절로 불어나리라

보다 많은 자리수까지 정확한 값을 얻기 위해서 어떻게 해야할까?

이 페이지는 지금은 없어진 예전의 퀴즈게시판에서 '무한대에 도전한다'는 제목으로 쓴 조규억 님의 아래와 같은 글을 계기로 만들게 되었다.

우리가 일반적으로 최대한 표현할 수 있는 수는 long double형을 사용한것입니다.
음...정확히 어떤 값인지는 모르겠네요^^
그런데 만약에 수학적이나 과학적으로 그것보다 더 큰 수를 사용해야 할 때는 어떻게 하나요?
도저히 방법이 없습니다. 그래서 수를 사용할때는 무한대까지...아니 조금 큰(?)수도 못구하는 거죠...뭐 1~무한대까지는 어떻게 표현은 할것같습니다.
그런데 문제는 순차적인 수(1씩증가)가 아니라...2의 제곱을 구하는 것입니다.
2의 1000000제곱은 무슨 수일까요???아마 이걸 어떤 방법으로 구해서 모니터로 출력시킨다면 무슨 놈의 숫자가 모니터를 도배할 것 입니다.
전 2의 1000000제곱을 구하고 싶습니다. 간단히 제가 생각한 방법을 설명드리겠습니다.
먼저 메로리를 아끼기 위해서 파일입출력을 사용합니다. (요즘하드는 용량이 크니깐^^)
그리고 숫자를 각각의 자리별로 문자로 취급합니다. 즉 1은 1이 아니라 '1'이라는 거죠.
파일에서 한문자를 입력받아 2를 곱하거나 그 수를 다시 더합니다. 그래서 자리올림수가 발생하면 윗 자리에 더하구요...계속 이런 식으로 최상위자리까지 올라갑니다.
결과적으로 계산된값을 2^???식으로 모니터에 출력하고 파일에 그 값을 출력합니다. 모든 데이터는 문자로 다룹니다. 물론 사칙연산은 숫자로 하죠...무슨 얘기인지..제가 써놓고도 뭔지 모르겠네요..도움을 요청하다가 우연히 이곳에 오게되어 이렇게 글만 뎅강 남겨놓고 떠나네요^^죄송합니다. 약간의 힌트라도 메일로 보내주심이...^^기다리겠습니다.

참고로 2의 10 거듭제곱(2^10)은 1024로써 대략 10^3(4자리)이고, 2의 1,000 거듭제곱은 302 자리이며, 2의 1,000,000 거듭제곱은 30만 자리가 넘는다.

그럼, 2배수의 세계로 들어가자.

  1. 1단계 - 불완전한 페이지

  2. 2단계 - 완성된 페이지


최초 작성일 : 2000.12.10.