import java.util.Scanner; /** * Created by jordanly on 1/11/15. */ public class Euclidean_TSP { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); double p = in.nextDouble(); double s = in.nextDouble(); double v = in.nextDouble(); double val = search(s, n, p, v, 0, Integer.MAX_VALUE, .000001); System.out.println(totalTime(s, n, val, p, v) + " " + val); } public static double search(double s, double n, double p, double v, double left, double right, double precision) { while (true) { if (Math.abs(right - left) < precision) { return (left + right)/2; } double leftThird = left + (right - left)/3; double rightThird = right - (right - left)/3; double leftVal = totalTime(s, n, leftThird, p, v); double rightVal = totalTime(s, n, rightThird, p, v); if (leftVal > rightVal) { left = leftThird; } else { right = rightThird; } } } public static double totalTime(double s, double n, double c, double p, double v) { return travTime(s, c, v) + algTime(n, p, c); } public static double travTime(double s, double c, double v) { return (s * (1 + 1/c))/v; } public static double algTime(double n, double p, double c) { return (n * Math.pow((Math.log(n)/Math.log(2)), c * Math.sqrt(2)))/(p * 1000000000); } }