avoid 문제에서 경우의수가 long long의 크기를 넘을수있나요?

  • GilDong
    GilDong

    테스트하다가

    long long a=0LL;
    long long b=2LL;
    for(int i=0;i<98;i++)
    {
        a+=b;
        b*=2;
    }
    

    에서 a의 가지수가 최대 가지수인거 같은데 long long 의 범위를 벗어납니다. 서버에서 검사할때 어떤 변수를 쓰는지 몰라서 만약 가지수를 저장한 변수가 음수면 런타임에러를 뜨게 해놨는데 에러가 떴습니다. 그래서 경우의 수가 더해지면서 자료형을 초과하니까 음수값으로 나온걸로 예상하고요 그래서 혹시 long long 의 범위를 벗어나는지, 벗어나면 거의 무한대 자료형을 직접 구현해야 하는지 해결하신분들 조언 부탁드립니다


    10년 전
1개의 댓글이 있습니다.
  • Taeyoon_Lee
    Taeyoon_Lee

    중간 중간에 기약분수로 약분해주면 long long 범위를 벗어나지 않는 것 같습니다.


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