티스토리 툴바

나의 큰 O는 logx야..

블로그 이미지
메텔이 기계제국을 무너뜨리기 위해 몸을 은하철도999에 맡겼듯이
by ∫2tdt=t²+c
  • 33,628Total hit
  • 19Today hit
  • 35Yesterday hit

바로 전 글에서 알고리즘에 대해 주절주절 설명하느라고 코드를 올리지 못했다. 시프트 더하기 16..(몇이었더라)알고리즘을 쓰도록 하겠다. 그전에 먼저 bigint의 길이를 줄여주는 함수를 작성한다.


이 함수는 bigint의 현재 길이에서 필요없는 부분(예를 들어 0000001101101011011에서 앞의 0000000 같은놈)을 잘라내어서 길이를 줄인다. 그리고 원래 길이를 리턴한다. 이 함수를 만든 이유는 계산시에 불필요한 부분을 계산하지 않고 효율성을 높이기 위해서이다. 단, 계산후에는 bigint를 원래 길이로 돌려놓아야한다.


 제일 처음에 dcsizemax를 구하는 부분이 나오는데, 이는 src이 10^9진수로 변환했을때 몇자리가 나오는지 구해준다. http://www.sitmo.com/gg/latex/latex2png.2.php?z=100&eq=log_%7B10%5E9%7D%7B(2%5E%7B32%7Dn)%7D%3Dn%5Ccdot%201.0703288%5Cldots 별거 없고 그냥 이 식을 이용해서 구한것이다. 소수점아래 4번째자리까지 취했는데, n이 커질수록 오차가 커진다. 따라서 1.0704로 취해서 자리가 남으면 남았지 모자라지 않게 했다.
중간에 이중루프 있는 부분이 시프트 더하기 1647483648 알고리즘을 구현한 부분이다.

저작자 표시 비영리
크리에이티브 커먼즈 라이선스
Creative Commons License
TRACKBACK 0 AND COMMENT 0

ARTICLE CATEGORY

분류 전체보기 (95)
적분史 (16)
프로그래밍 (57)
소리 (3)
언어 (8)
미래 (3)
수학 (6)

CALENDAR

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

ARCHIVE