emuratov606Erali
14.11.2020 23:35

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 пл

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
2012schtv
13.10.2020 11:28
Ll - long long

dp[i] = dp[i-1] + dp[i-2] + dp[i-5] + dp[i-10];
ll dp[666];
dp[0] = 1;
for(int i=0;i<=64;i++)
{
dp[i+1]+=dp[i];
dp[i+2]+=dp[i];
dp[i+5]+=dp[i];
dp[i+10]+=dp[i];
cout << i << ": " << dp[i] << endl;
}
это если порядок важен, то есть 2 + 1 != 1 + 2, тогда ответ
489475342266653, наверное
а иначе 644

ll ans=0;
for(int i=0;i<10;i++) // 10
{
for(int j=0;j<20;j++) // 5
{
for(int k=0;k<50;k++) // 2
{
ll now = i*10 + j*5 + k*2;
if(now<=64) ans++;
}
}
}
cout << ans;
0,0(0 оценок)
Ответ:
деня1990
23.01.2022 02:21
Обозначим P,Q,A утверждение что х принадлежит соответствующему отрезку
¬А отрицание А, то есть х не принадлежит А
перепишем и упростим исходную формулу
P→((Q∧¬A)→P)
известно что X→Y=¬X∨Y (доказывается просто, например через таблицу истинности)
тогда:
P→(¬(Q∧¬A)∨P)
раскроем скобку ¬(Q∧¬A) с закона де Моргана (стыдно их не знать, если что это такие же основы как и таблицы истинности)
P→(¬Q∨¬¬A∨P) = P→(¬Q∨A∨P) = ¬P∨¬Q∨A∨P
¬P∨P=1 то есть всегда истинно и 1∨Х=Х значит ¬P и P можно убрать
остается ¬Q∨A
Значит х либо принадлежит А либо не принадлежит Q
для выполнения этого условия необходимо чтобы все значения Q принадлежали А, тогда минимальное А совпадает с Q
ответ А=[40,77]
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота