AOJ0107 Carry a Cheese

問題リンク Carry a Cheese

  • 解法

直方体は回転させてみればただの長方形になります。直方体なので3種類の長方形にすることができます。この長方形が円形の入り口に入るかどうかは、対角線が円の直径より短いかどうかでわかります。つまり、入力で縦横高さの情報を貰ったら、3種類の対角線の長さを三平方の定理で求めて最小値を求めます。円の直径よりこの最小値が真に小さければチーズを通すことができます。

  • ソース
import java.util.Scanner;

//Carry a Cheeze
public class AOJ0107 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(true){
			int a = sc.nextInt();
			int b = sc.nextInt();
			int c = sc.nextInt();
			if(a==0&&b==0&&c==0)break;
			double da = Math.sqrt(a*a+b*b);
			double db = Math.sqrt(b*b+c*c);
			double dc = Math.sqrt(a*a+c*c);
			double min = da;
			if(db < min)min = db;
			if(dc < min)min = dc;
			int t = sc.nextInt();
			while(t--!=0){
				int r = sc.nextInt()*2;
				System.out.println(min<r?"OK":"NA");
			}
		}
	}
}