Задача. Многоквартирный дом имеет [latex]N[/latex] квартир, [latex]P[/latex] подъездов и [latex]Q[/latex] этажей, причем на каждом этаже каждого подъезда имеется одинаковое количество квартир. Определить в каком подъезде и на каком этаже находится квартира с заданным номером [latex]K[/latex].
Входные данные
В единственной строке файла записаны значения [latex]N, P, Q, K. 1 \leq K \leq N \leq 1000, P \times Q \leq N.[/latex]
Выходные данные
В единственную строку файла нужно вывести номер подъезда и этаж, на котором находится квартира с номером [latex]K.[/latex]
Задача взята с сайта e – olymp.
Тесты
| Входные данные | Выходные данные | 
| 250 5 5 1 | 1 1 | 
| 30 2 5 27 | 2 4 | 
| 300 3 10 111 | 2 2 | 
| 80 5 4 77 | 5 4 | 
| 98 7 2 39 | 3 2 | 
| 90 3 15 90 | 3 15 | 
Перед нами была поставлена задача определить в доме с заданным количеством квартир, подъездов и этажей положение конкретной квартиры, а именно указать номер подъезда и этаж. Для дальнейшего хода решения определим две целочисленные переменные – flatEntrance (количество квартир в одном подъезде) и flatFloor (количество квартир на одном этаже). Найдем номер подъезда получив целую часть от деления номера квартиры на количество квартир в одном подъезде. Далее выполняем проверку остатка от деления, если он отличен от нуля, то это указывает на то, что квартира находится уже в следующем подъезде. В таком случае инкрементируем переменную entrance.
Для нахождения номера этажа поступим аналогично. Однако следует проверить не делится ли номер квартиры на количество квартир в одном подъезде нацело, если да – она располагается на последнем этаже. Если этого не сделать, то в последующей формуле получим [latex]0[/latex]. В общем случае номер этажа находим поделив остаток от деления номера квартиры на количество квартир в подъезде на количество квартир на этаже (учитываем, что каждый новый подъезд предполагает продолжение нумерации с первого этажа). И снова выполняем проверку остатка от деления. При надобности инкрементируем переменную floor.
Код программы:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import java.util.*; import java.lang.*; import java.io.*; class Main { 	public static void main (String[] args) throws java.lang.Exception 	{ 		int N, P, Q, K, flatEntrance, flatFloor, entrance, floor; 		Scanner sc = new Scanner(System.in); 		N = sc.nextInt(); 		P = sc.nextInt(); 		Q = sc.nextInt(); 		K = sc.nextInt(); 		flatEntrance = N/P;     	flatFloor = N/P/Q; 		entrance = K/flatEntrance;  		if (K%flatEntrance != 0){ 			entrance++; 		} 		if (K%flatEntrance == 0){ 		    floor = Q; 		} 		else { 		    floor = (K%flatEntrance)/flatFloor;  		    if (K%flatFloor != 0){ 		  	    floor++; 		    } 		} 		System.out.format("%d %d", entrance, floor); 	} } | 
 
						
Хорошо. Только пользуйтесь везде табуляцией, чтобы я не исправлял.
Вот не пойму, куда мне записывать оценку за эту работу. Вы указали две категории. Линейные алгоритмы — точно не то, убрал. Алгоритмы с ветвлениями Вы уже сдали. Это было просто для души?
Хотел узнать за эту ли работу поставили