-2

Pooja would like to withdraw X $US from an ATM. The cash machine will only accept the transaction if X is a multiple of 5, and Pooja's account balance has enough cash to perform the withdrawal transaction (including bank charges). For each successful withdrawal the bank charges 0.50 $US.

Calculate Pooja's account balance after an attempted transaction .

Input

Positive integer 0 < X <= 2000 - the amount of cash which Pooja wishes to withdraw.

Nonnegative number 0<= Y <= 2000 with two digits of precision - Pooja's initial account balance.

Output

Output the account balance after the attempted transaction, given as a number with two digits of precision. If there is not enough money in the account to complete the transaction, output the current bank balance.

import java.util.Scanner;

 class HS08TEST {
    public static void main(String[] args) {
        Scanner s =new Scanner(System.in);
        double x = s.nextDouble();
        double y =s.nextDouble();
        if( x>=0.00 && x<=2000.00 &&y>=0.00 && y<=2000.00){
            if(x==0){
                System.out.printf("%.2f",y);

            }
            else if(x%5==0.00 && x<=y){
                System.out.printf("%.2f",y-x-0.50);
            }
            else{
                System.out.printf("%.2f",y);
            }
        }
    }

}

The code works fine on my IDE, but it is showing wrong answer on codechef. It is showing "wrong answer" when i am compiling it on codechef.I am not getting where is the real issue. Please help me out on this.

Subham Kumar
  • 477
  • 1
  • 6
  • 12

2 Answers2

0

The problem statement says "has enough cash to perform the withdrawal transaction (including bank charges)", but the bank charge is ignored in the test.

The program allows the balance to go negative for x=5, y=5.07.

In addition, do not use double for short decimal fractions that need to be calculated exactly. See Is floating point math broken?

Community
  • 1
  • 1
Patricia Shanahan
  • 25,849
  • 4
  • 38
  • 75
0

I edited my code, and this new code is working fine. Initially i have not taken care about the data types properly.

import java.util.Scanner;

public class HS08TEST {
    public static void main(String[] args) {
        Scanner s =new Scanner(System.in);
        int x = s.nextInt();
        float y =s.nextFloat();
        if( x>=0 && x<=2000 &&y>=0&& y<=2000){
            if(x==0){
                System.out.printf("%.2f",y);

            }

            else if(x%5==0 && x+0.50<=y){
                System.out.printf("%.2f",y-x-0.50);
            }
            else{
                System.out.printf("%.2f",y);
            }
        }
    }

}
Subham Kumar
  • 477
  • 1
  • 6
  • 12