Those boundary cases! :[ This was an important problem. Must solve!
import java.io.PrintWriter; import java.util.Scanner; /** * * @author Sanchit M. Bhatnagar * @see http://uhunt.felix-halim.net/id/74004 * */ public class P573 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); PrintWriter out = new PrintWriter(System.out); while (sc.hasNextInt()) { double H = sc.nextInt(); double U = sc.nextInt(); double D = sc.nextInt(); double F = sc.nextInt(); if (H == 0) break; double decrease = U * (F * 1.0 / 100); double current = 0; boolean first = true; int day = 0; while (current <= H && (first || current >= 0)) { day++; current += U; if (current > H) break; current -= D; U -= decrease; U = Math.max(U, 0); first = false; } if (current <= 0) { out.println("failure on day " + day); } else { out.println("success on day " + day); } out.flush(); } out.close(); sc.close(); } }