abhimanyu_sahrawat's blog

By abhimanyu_sahrawat, history, 2 months ago, In English

import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while (t-- > 0) { double x1=sc.nextDouble(); double p1= sc.nextDouble(); double x2= sc.nextDouble(); double p2=sc.nextDouble(); double mulx1=0; double mulx2=0;

if (x1==0){
           x1=1;
       } else {
           x1=x1;
       }
       if (x2==0){
           x2=1;
       }else {
           x2=x2;
       }
       if (p1>0){
            mulx1=x1*Math.pow(10,p1);
        }else {
            mulx1=x1*1;

        }

        if (p2>0){
            mulx2=x2*Math.pow(10,p2);
        }else {
            mulx2=x2*1;
        }
        if (mulx1>mulx2)
            System.out.println(">");
        else if (mulx1<mulx2)
            System.out.println("<");
        else if (mulx1== mulx2)
            System.out.println("=");

    }


}

}

 
 
 
 
  • Vote: I like it
  • -17
  • Vote: I do not like it

»
2 months ago, # |
  Vote: I like it -9 Vote: I do not like it

Your code is completely unreadable, do this:

Result
»
2 months ago, # |
  Vote: I like it 0 Vote: I do not like it

First off,dont read doubles if the problem specifies ints. Also there's no point checking if x1/x2 are equal to 0, the problem states they're always more or equal to one. The corresponding else clauses are completely useless, just throw both of them out.

I see you tried to exponentiate and do a simple comparison, but that wont do. p1 and p2 can be as big as 10^6, so there's gonna be an overflow in mulx1/mulx2.

In my solution, I first compared the number of digits in each number, and print out a solution immediately, or if they're the same multiply the smaller number by 10 until both x1 and x2 have the same number of digits and do a comparison then.

Link: https://codeforces.com/contest/1613/submission/137657914