Задача
Пройдет ли кирпич со сторонами [latex]a[/latex], [latex]b[/latex] и [latex]c[/latex] сквозь прямоугольное отверстие со сторонами [latex]r[/latex] и [latex]s[/latex]? Стороны отверстия должны быть параллельны граням кирпича.
| A | B | C | R | S | Ответ | 
| 10 | 8 | 7 | 4 | 3 | Impossible | 
| 1 | 9 | 8 | 5 | 9 | Possible | 
| 5 | 5 | 5 | 8 | 2 | Impossible | 
| 4.5 | 4 | 4 | 5 | 5 | Possible | 
| 0.5 | 3.4 | 0.8 | 4 | 2.5 | Possible | 
Код программы на C++
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream> using namespace std; int main()  { 	double a, b, c, r, s;  	bool x = false; // Переменная, с помощью которой мы  увидим невозможность выполнения задачи 	cout << "Write size of brick: \n"; 	cin >> a >> b >> c; 	cout << "Write size of  slot: \n"; 	cin >> r >> s; 	if ((((a < r) && (b < s)) || ((b < r) && (a < s)))||    //Проверка трех вариантов расположения кирпича 			(((b < r) && (c < s)) || (( c < r) && (b < s)))|| 			(((a < r) && (c < s)) || ((c < r) && (a < s)))) 		x=true; 	printf( x? "Possible" : "Impossible"); 	return 0; } | 
Код программы на Java
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class Main { 	public static void main (String[] args) throws java.lang.Exception 	{ 		Scanner in = new Scanner(System.in); 		double a,b,c,r,s; 		boolean x=false; 		System.out.println("Write size of brick:"); 		a=in.nextDouble(); 		b=in.nextDouble(); 		c=in.nextDouble(); 		System.out.println("Write size of  slot: "); 		r=in.nextDouble(); 		s=in.nextDouble(); 		if ((((a < r) && (b < s)) || ((b < r) && (a < s))) || (((b < r) && (c < s)) || (( c < r) && (b < s)))|| 			(((a < r) && (c < s)) || ((c < r) && (a < s)))) 		x=true; 		if(x) 		System.out.println("Possible"); 		else 		System.out.println("Impossible "); 	} } | 
В этой задаче я считаю, что если длины соответствующих сторон равны — то кирпич проходит не будет. Также считаем что ни одна из сторон не может быть нулем. Поскольку нам надо проверить входит ли кирпич в щель в общем, мы имеем право рассматривать три варианта положения кирпича относительно щели. Во всех трех случаях алгоритм одинаков. Он состоит в сравнении сторон щели и сторон грани. По крайней мере две стороны кирпича должны быть меньше двух сторон щели. Если два условия выполняются — то переменной [latex]x[/latex] присваивают значение true и выводится на экран сообщение, что выполнить задачу возможно. В противном случае значение переменной останется неизменным. Как следствие будет выведено на экран сообщение, что эта задача не разрешима.
