. У Поликарпа есть прямоугольный лист бумаги, разделенный на клетки. Всего на листе есть n строк и m столбцов. Каждая клетка на листе имеет белый цвет.
Поликарп решил покрасить ровно k различных клеток своего листа в красный цвет.
Поликарп пока не знает какие именно клетки поля он покрасит в красный цвет. Перед
покраской он обратился к вам и просит посчитать два числа:
• минимальное количество строк, в которых в красный цвет может быть покрашена
хотя бы одна клетка после покраски k произвольных различных клеток листа;
• максимальное количество строк, в которых в красный цвет может быть покрашена
хотя бы одна клетка после покраски k произвольных различных клеток листа.
Формат входных данных
В первой строке следует целое число n (1 6 n 6 106
) — количество строк на листе.
Во второй строке следует целое число m (1 6 m 6 106
) — количество столбцов на листе.
В третьей строке следует целое число k (1 6 k 6 min(109
, n · m)) — количество клеток,
которые покрасит Поликарп.
Формат выходных данных
Выведите два целых числа — минимальное и максимальное количество строк, в которых
в красный цвет может быть покрашена хотя бы одна клетка после покраски в красный
цвет k произвольных различных клеток листа.
Примеры
стандартный ввод стандартный вывод
3
4
2 1 2
4
5
20 4 4
50
66
199 4 50
Замечание
В первом примере, если обе красные клетки будут в одной строке, то минимальное
количество строк равно 1. Если же красные клетки будут в двух разных строках, то максимальное количество строк равно 2.
Во втором примере все клетки на листе будут покрашены в красный цвет, поэтому
минимальное и максимальное количество строк равно 4.
ответ: Программа рабочая, проверена.
Program zadacha;
var
a: array [1..50] of integer; // размерность массива = 50
i,k: integer;
begin
begin
for i:=1 to 50 do
a[i] := Random(100); // числа от 0 до 100 будут присутствовать в массиве
writeln('Заполненный массив: ');
for i:=1 to 50 do
write(a[i],' '); end; // выводим массив на экран до проверки
writeln; //новая строка
writeln('Введите значение числа K: '); readln(k);
writeln('Элементы массива, кратные K:');
for i:=1 to 50 do
if (a[i] mod k = 0) then write(a[i],' ');
end.
Объяснение:
i - порядковый номер элемента
a - сам массив
k - вводимое число
В остальном оставила комментарии.
Размерность массива и его диапазон указан в программе числами, т.к. в задаче не было вопроса о вводе элементов или вводе размерности.
Так как целевой язык не указан и автор вопроса выразил своё безразличие к этому вопросу, то написал пример на С# с использованием возможностей стандартной библиотеки языка.
Код ниже:
using System;
using System.Linq;
using System.Collections.Generic;
namespace Znanium {
public class AnotherOne
{
public static void Main()
{
// Генерация массива
var rand = new Random(); // Инициализируем рандомайзер
int[] arr = (from x in Enumerable.Range(0, 10) // Отсчитываем 10 элементов
select rand.Next(100)) // Генерируем счисло от 0 до 99
.ToArray(); // Делаем из объекта массив
// Печатаем массив на экран
Console.WriteLine("Source array:");
PrintArr(arr);
// Находим максимальный элемент
int maxEl = arr.Max();
Console.WriteLine($"Max element is {maxEl}.");
}
public static void PrintArr(int[] arr) {
Console.Write("[ ");
foreach(var el in arr) {
Console.Write($"{el} ");
}
Console.WriteLine("]");
}
}
}