Ratio 문제

  • Sooooo
    Sooooo

    RATIO

    • 코드
    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int main(){
    
        int testcase;
    
        cin>>testcase;
    
        while(testcase--){
    
            double z1, i;   //z1 : 실제 승률, i : 해야하는 판수
            int z2, z3; //z2 : 버림한 승률, z3 : 1% 올라간 승률
    
            int M, N;
    
            cin>>N>>M;
    
            z1 = ((double)M/(double)N)*100;
            z2 = z1;
            z3 = z2+1;
    
            i = (((double)N*z3) - (100*(double)M))/(100 - (double)z3);
    
            if(i <= 0) i = -1;
            if(i > 2000000000) i = -1;
    
            cout<<(int)ceil(i)<<endl;
        }
    
        return 0;
    
    }
    

    저는 수학식을 이용해서 딱 1%를 올리기 위해 몇판이 필요한지를 구하고 버림을 해서 정답을 구하는 방식으로 구현하였습니다.

    근데 어느 부분에서 정확한 답이 나오지 않는 건지 잘 모르겠습니다.


    10년 전
6개의 댓글이 있습니다.
  • Being
    Being

    승률을 항상 1% 올릴 수 있는지 생각해 보시기 바랍니다.


    10년 전 link
  • Sooooo
    Sooooo

    무슨 의미인지 모르겠네요


    10년 전 link
  • veckal
    veckal

    divide by zero는 따로 분리해 주세요


    10년 전 link
  • pugas
    pugas

    전 계산식 정리하다가 음수면 부호가 바뀌는 경계선이 있어서 그 부분 처리를 해주었던 것 같아요..


    10년 전 link
  • Sooooo
    Sooooo

    Z3가 100일 경우 말씀하시는 거죠?? 따로 예외 처리 추가했는데도 답이라고 안뜨네요..ㅠㅠ


    10년 전 link
  • Stun
    Stun

    1 100000 58000
    넣어보세요.


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