B. площадь
ограничение времени
1 секунда
ограничение памяти
64mb
ввод
стандартный ввод или input.txt
вывод
стандартный вывод или output.txt
городская площадь имеет размер n× m и покрыта квадратной плиткой размером 1× 1. при плановой замене плитки выяснилось, что новой плитки недостаточно для покрытия всей площади, поэтому было решено покрыть плиткой только дорожку по краю площади, а в центре площади разбить прямоугольную клумбу (см. рисунок к примеру). при этом дорожка должна иметь одинаковую ширину по всем сторонам площади. определите максимальную ширину дорожки, которую можно выложить из имеющихся плиток.
формат ввода
первая и вторая строки входных данных содержат по одному числу n и m (3≤ n ≤ 2× 109, 3≤ m ≤ 2× 109) — размеры площади.
третья строка содержит количество имеющихся плиток t, 1≤ t< nm.
обратите внимание, что значение t может быть больше, чем возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные числа (тип int64 в языке pascal, тип long long в c и c++, тип long в java и c#).
формат вывода
программа должна вывести единственное число — максимальную ширину дорожки, которую можно выложить из имеющихся плиток.
система оценки
решение, правильно работающее только для случаев, когда числа n и m не превосходят 1000, будет оцениваться в 60 .
пример
ввод
вывод
6
7
38
2
примечания
пояснение к примеру. площадь имеет размеры 6× 7, из 38 плиток можно выложить дорожку шириной в 2 пл
121 имеет 3 разряда, значит основание однозначно меньше 10 и больше 2. Подходят 3, 4, 6, 8.
Учитывая, что в числе 121 три разряда, значит число 48 делилось всего три раза.
Число 8 не подойдет, т.к. 48/8=6, значит будет всего два деления.
Число 3 не подойдет, т.к. 48/3 = 16, 16/3=5 - то есть тут будет больше трёх знаков.
Число 4 не подойдет, т.к. 48/4=12, а 12 делится на 4 без остатка, но, судя по числу, во втором делении остаток должен быть равен 2.
Остаётся число 6. Проверим
49/6=8 |1
8/6 = 1 |2
1/6=0 |1
121(6)
type ar=array[1..n+1] of integer;
var
a:ar; i,p:integer;
procedure pr(var a:ar; p:integer; var k:integer);
begin
k:=1;
while a[k]<>p do k:=k+1;
end;
begin
Randomize;
writeln('Массив A:');
for i:=1 to n do
begin
a[i]:=random(31);
write(a[i]:4);
end;
writeln;
p:=17;
a[n+1]:=p;
pr(a,p,i);
if i<n
then writeln('Значение 17 найдено, номер элемента = ',i)
else writeln('Значения 17 в массиве нет');
end.
Пример:
Массив A:
14 5 7 17 25 15 28 0 24 0
Значение 17 найдено, номер элемента = 4