import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int a = sc.nextInt();
		int b = sc.nextInt();
		int h = sc.nextInt();
		int m = sc.nextInt();
		
		//0時からの分針の角度を求める
		double Mangle = (m*360.0)/60.0;
		//0時からの時針の角度を求める
		double Hangle = (h*60.0+m)*360.0/(12.0*60.0);
		
		//時針の角度-分針の角度で辺a,bの間の角度を求める
		double MHangle = 0;
		//180°を超えている場合は360からマイナスする
		//例：(9:00の場合0時からだと270°となるので引いて90°となる)
		if(Hangle-Mangle>180) {
			MHangle = 360-(Hangle-Mangle);
		}else {
			MHangle = Hangle-Mangle;
		}
		
		//求めた角度からcosを求める
		//(一度ラジアンに変換する必要があるため[角度*(Math.PI/180)]とする)
		double cosA = Math.cos(MHangle*(Math.PI/180.0));
		
		//余弦定理から答えを求める Math.sqrt√(平方根)で求める
		double answer = Math.sqrt((a*a)+(b*b)-(2*a*b*cosA));

		System.out.println(answer);

	}
} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int a = sc.nextInt();
		int b = sc.nextInt();
		int h = sc.nextInt();
		int m = sc.nextInt();
		
		//0時からの分針の角度を求める
		double Mangle = (m*360.0)/60.0;
		//0時からの時針の角度を求める
		double Hangle = (h*60.0+m)*360.0/(12.0*60.0);
		
		//時針の角度-分針の角度で辺a,bの間の角度を求める
		double MHangle = 0;
		//180°を超えている場合は360からマイナスする
		//例：(9:00の場合0時からだと270°となるので引いて90°となる)
		if(Hangle-Mangle>180) {
			MHangle = 360-(Hangle-Mangle);
		}else {
			MHangle = Hangle-Mangle;
		}
		
		//求めた角度からcosを求める
		//(一度ラジアンに変換する必要があるため[角度*(Math.PI/180)]とする)
		double cosA = Math.cos(MHangle*(Math.PI/180.0));
		
		//余弦定理から答えを求める Math.sqrt√(平方根)で求める
		double answer = Math.sqrt((a*a)+(b*b)-(2*a*b*cosA));

		System.out.println(answer);

	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int a = sc.nextInt();
		int b = sc.nextInt();
		int h = sc.nextInt();
		int m = sc.nextInt();
		
		//0時からの分針の角度を求める
		double Mangle = (m*360.0)/60.0;
		//0時からの時針の角度を求める
		double Hangle = (h*60.0+m)*360.0/(12.0*60.0);
		
		//時針の角度-分針の角度で辺a,bの間の角度を求める
		double MHangle = 0;
		//180°を超えている場合は360からマイナスする
		//例：(9:00の場合0時からだと270°となるので引いて90°となる)
		if(Hangle-Mangle>180) {
			MHangle = 360-(Hangle-Mangle);
		}else {
			MHangle = Hangle-Mangle;
		}
		
		//求めた角度からcosを求める
		//(一度ラジアンに変換する必要があるため[角度*(Math.PI/180)]とする)
		double cosA = Math.cos(MHangle*(Math.PI/180.0));
		
		//余弦定理から答えを求める Math.sqrt√(平方根)で求める
		double answer = Math.sqrt((a*a)+(b*b)-(2*a*b*cosA));

		System.out.println(answer);

	} main {
		Scanner sc = new Scanner(System.in);

		int a = sc.nextInt();
		int b = sc.nextInt();
		int h = sc.nextInt();
		int m = sc.nextInt();
		
		//0時からの分針の角度を求める
		double Mangle = (m*360.0)/60.0;
		//0時からの時針の角度を求める
		double Hangle = (h*60.0+m)*360.0/(12.0*60.0);
		
		//時針の角度-分針の角度で辺a,bの間の角度を求める
		double MHangle = 0;
		//180°を超えている場合は360からマイナスする
		//例：(9:00の場合0時からだと270°となるので引いて90°となる)
		if(Hangle-Mangle>180) {
			MHangle = 360-(Hangle-Mangle);
		}else {
			MHangle = Hangle-Mangle;
		}
		
		//求めた角度からcosを求める
		//(一度ラジアンに変換する必要があるため[角度*(Math.PI/180)]とする)
		double cosA = Math.cos(MHangle*(Math.PI/180.0));
		
		//余弦定理から答えを求める Math.sqrt√(平方根)で求める
		double answer = Math.sqrt((a*a)+(b*b)-(2*a*b*cosA));

		System.out.println(answer);

	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int a = sc.nextInt(); a sc.nextInt() sc.nextInt sc int b = sc.nextInt(); b sc.nextInt() sc.nextInt sc int h = sc.nextInt(); h sc.nextInt() sc.nextInt sc int m = sc.nextInt(); m sc.nextInt() sc.nextInt sc double Mangle = (m*360.0)/60.0; Mangle (m*360.0)/60.0 (m*360.0) m 360.0 60.0 double Hangle = (h*60.0+m)*360.0/(12.0*60.0); Hangle (h*60.0+m)*360.0/(12.0*60.0) (h*60.0+m)*360.0 (h*60.0+m) h*60.0 h 60.0 m 360.0 (12.0*60.0) 12.0 60.0 double MHangle = 0; MHangle 0 if(Hangle-Mangle>180) {
			MHangle = 360-(Hangle-Mangle);
		}else {
			MHangle = Hangle-Mangle;
		} Hangle-Mangle>180 Hangle-Mangle Hangle Mangle 180 {
			MHangle = 360-(Hangle-Mangle);
		} MHangle = 360-(Hangle-Mangle) MHangle 360-(Hangle-Mangle) 360 (Hangle-Mangle) Hangle Mangle {
			MHangle = Hangle-Mangle;
		} MHangle = Hangle-Mangle MHangle Hangle-Mangle Hangle Mangle double cosA = Math.cos(MHangle*(Math.PI/180.0)); cosA Math.cos(MHangle*(Math.PI/180.0)) Math.cos Math MHangle*(Math.PI/180.0) MHangle (Math.PI/180.0) Math.PI Math Math.PI 180.0 double answer = Math.sqrt((a*a)+(b*b)-(2*a*b*cosA)); answer Math.sqrt((a*a)+(b*b)-(2*a*b*cosA)) Math.sqrt Math (a*a)+(b*b)-(2*a*b*cosA) (a*a)+(b*b) (a*a) a a (b*b) b b (2*a*b*cosA) b 2*a*b*cosA 2 a b cosA System.out.println(answer) System.out.println System.out System System.out answer String[] args args public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int a = sc.nextInt();
		int b = sc.nextInt();
		int h = sc.nextInt();
		int m = sc.nextInt();
		
		//0時からの分針の角度を求める
		double Mangle = (m*360.0)/60.0;
		//0時からの時針の角度を求める
		double Hangle = (h*60.0+m)*360.0/(12.0*60.0);
		
		//時針の角度-分針の角度で辺a,bの間の角度を求める
		double MHangle = 0;
		//180°を超えている場合は360からマイナスする
		//例：(9:00の場合0時からだと270°となるので引いて90°となる)
		if(Hangle-Mangle>180) {
			MHangle = 360-(Hangle-Mangle);
		}else {
			MHangle = Hangle-Mangle;
		}
		
		//求めた角度からcosを求める
		//(一度ラジアンに変換する必要があるため[角度*(Math.PI/180)]とする)
		double cosA = Math.cos(MHangle*(Math.PI/180.0));
		
		//余弦定理から答えを求める Math.sqrt√(平方根)で求める
		double answer = Math.sqrt((a*a)+(b*b)-(2*a*b*cosA));

		System.out.println(answer);

	}
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int a = sc.nextInt();
		int b = sc.nextInt();
		int h = sc.nextInt();
		int m = sc.nextInt();
		
		//0時からの分針の角度を求める
		double Mangle = (m*360.0)/60.0;
		//0時からの時針の角度を求める
		double Hangle = (h*60.0+m)*360.0/(12.0*60.0);
		
		//時針の角度-分針の角度で辺a,bの間の角度を求める
		double MHangle = 0;
		//180°を超えている場合は360からマイナスする
		//例：(9:00の場合0時からだと270°となるので引いて90°となる)
		if(Hangle-Mangle>180) {
			MHangle = 360-(Hangle-Mangle);
		}else {
			MHangle = Hangle-Mangle;
		}
		
		//求めた角度からcosを求める
		//(一度ラジアンに変換する必要があるため[角度*(Math.PI/180)]とする)
		double cosA = Math.cos(MHangle*(Math.PI/180.0));
		
		//余弦定理から答えを求める Math.sqrt√(平方根)で求める
		double answer = Math.sqrt((a*a)+(b*b)-(2*a*b*cosA));

		System.out.println(answer);

	}
} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int a = sc.nextInt();
		int b = sc.nextInt();
		int h = sc.nextInt();
		int m = sc.nextInt();
		
		//0時からの分針の角度を求める
		double Mangle = (m*360.0)/60.0;
		//0時からの時針の角度を求める
		double Hangle = (h*60.0+m)*360.0/(12.0*60.0);
		
		//時針の角度-分針の角度で辺a,bの間の角度を求める
		double MHangle = 0;
		//180°を超えている場合は360からマイナスする
		//例：(9:00の場合0時からだと270°となるので引いて90°となる)
		if(Hangle-Mangle>180) {
			MHangle = 360-(Hangle-Mangle);
		}else {
			MHangle = Hangle-Mangle;
		}
		
		//求めた角度からcosを求める
		//(一度ラジアンに変換する必要があるため[角度*(Math.PI/180)]とする)
		double cosA = Math.cos(MHangle*(Math.PI/180.0));
		
		//余弦定理から答えを求める Math.sqrt√(平方根)で求める
		double answer = Math.sqrt((a*a)+(b*b)-(2*a*b*cosA));

		System.out.println(answer);

	}
}