아주 큰 수 (64bit 이상) 어떻게 다루죠?..

  • freedomJ
    freedomJ

    문제에서 인풋제한이
    최대 10의 50제곱까지 되있네요.
    실제 인풋파일이 9,000,000,000,000,000,000 정도 들어오는데요(Limit에는 한참 못미치는 크기죠.. 이것마저도 64비트로 커버가 안됩니다..;)

    이를 다루는 스킬좀 알려주세요;
    인풋을 못받으니 어떻게 처리 자체를 못하고 있습니다 ㅠ


    13년 전
11개의 댓글이 있습니다.
  • 빛나는별
    빛나는별

    문자열로 받으셔서 처리하면 되지 않을까요.


    13년 전 link
  • 묘지접수
    묘지접수

    문자열로 받으시고
    계산할 필요가 있으시면 1자리나 4자리 단위로 끊어서 저장하시고 쓰시면 됩니다


    13년 전 link
  • wookayin
    wookayin

    문제마다 다르지만... 일단 자료형 하나에 담는건 불가능하고요.

    (1) Big Integer를 써야 하는 경우 (아예 사칙연산등 계산을 해야 하는경우) => BigInteger 클래스나 라이브러리를 직접 작성합니다. 앞에서 두분이 말씀해주신대로 integer array로 처리합니다.

    (2) 그냥 문자열 등으로 한 자리씩 받아서, BigInteger 계산 필요없이 바로 문제를 해결할 수 있는 경우.

    아마 입력에서부터 이렇게 제한이 크다는 것은 보통 BigInteger를 써야하는 문제라기보다는, 주어진 입력을 그냥 digit array로 다룰 수 있거나, 아니면 모든 자리를 다 볼 필요가 없다거나(마지막 몇자리만 알면 된다거나, 전체 자리수의 합만 중요하다던가) 일 가능성이 매우 높습니다.

    그래서 그냥 문제에 대해 올바른 해법을 떠올렸다면, 문자열로 받아서 주어진 (수가 아닌) array를 다루시면 될 것 같습니다.


    13년 전 link
  • freedomJ
    freedomJ

    아... 문자열과 array를 쓰면되는군요!!;; 고민좀 해볼여지가 생기네요 ㅎ
    다시한번 감탄하고 돌아갑니다.!


    13년 전 link
  • Megalusion
    Megalusion

    저같은 경우는 이럴 때 Java를 씁니다.


    13년 전 link
  • freedomJ
    freedomJ

    BI 클래스를 만들었는데요... 나눗셈 operation이 징하군요..;;; 난감하네요;
    곱셈까지는 어찌어찌 만들었는데 ㅠ..


    13년 전 link
  • 김우현
    김우현

    freedomJ // 저도 요즘 라이브러리를 정리하는 중이라 이것저것 찾아보고 있는데..
    Binary search를 이용하는게 보편적인거 같습니다. ㅜ;
    혹시 좋은 방법 찾으시면 여기에도 알려주세요.


    13년 전 link
  • freedomJ
    freedomJ

    김우현님 // 문득 떠오른 생각인데요.. 나눗셈 원리를 생각하다보니 나눗셈은 곱셈과 뺄셈으로 이루어져있고, 이로인해 몫과 나머지가 나타나는 구조 인데, 이를 잘 활용하면 답이 나오지 않을까요?... (그냥 새벽에 갑자기 착상이 떠올라서 글 남겨봅니다... 내일 구현에 대해 좀 더 생각해보고 덧글 남길게요)


    13년 전 link
  • Taeyoon_Lee
    Taeyoon_Lee

    저는 이런 경우 구글에서 "igors uva tools" 라고 검색합니다. :D


    13년 전 link
  • VOCList
    VOCList

    1 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ


    13년 전 link
  • wookayin
    wookayin

    BigInteger 나눗셈은 좀 까다롭기 때문에 저같은 경우는 long long으로 나누는 것만 구현해서 라이브러리에 들고다닙니다. 그래도 거의 충분하고 BigInteger/BigInteger 가 필요한 경우는 여태까지 한번도 보질 못했어요. 간혹 그런 경우가 있더라도 보통은 다른 방법이 있을텐데.. 정말로 필요하다면 직접 binary search를 통해 [...] 짜겠죠 ㅠㅠ


    13년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.