Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Олимпиада по информатике нужен код на питоне срочно!!!

Иван Мазикин Ученик (87), открыт 1 месяц назад
У Маши есть прямоугольная шоколадка, состоящая из
m×n
квадратных долек. Маша хочет разделить эту шоколадку между своими друзьями, разломив шоколадку по линиям на
k
кусочков, то есть каждому другу достанется прямоугольный кусочек шоколадки.

У Юры сегодня день рождения, поэтому Маша хочет разделить шоколадку так, чтобы Юре достался самый большой кусок (содержащий как можно больше долек). Определите число долек в этом куске.Входные данные
Программа получает на вход три натуральных числа, каждое в отдельной строке:
m
,
n
и
k
. Все числа — целые положительные, при этом
m
и
n
не превосходят
10
6

, а
k≤mn
.

Обратите внимание на то, что значение
mn
, а, значит, и значение
k
в этой задаче может превышать возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).

Выходные данные
Программа должна вывести одно целое число — максимально возможное количество долек в том прямоугольном куске, который получит Юра.
5 ответов
paulcucumber Знаток (370) 1 месяц назад
 n = int(input()) 
m = int(input())
k = int(input())
n, m = (reversed(sorted([n, m])))
i = 1
j = max([j for j in range(1, m + 1) if i * j + k <= n * m + 1])
ans = i * j
flag = True
while i + j:
if flag:
i += 1
flag = False
else:
j -= 1
if i > n or j <= 0:
break
if i * j + k <= n * m + 1:
flag = True
if ans + k < i * j + k:
ans = i * j
print(ans)
Анна СафоноваУченик (152) 1 месяц назад
Бро
-Ученик (83) 1 месяц назад
не правильно
Maybe ЛебедевУченик (116) 1 месяц назад
Спасибо, правильно. 100 балов
София МирошниченкоУченик (168) 1 месяц назад
Большое спасибо
Александр АкимкинУченик (133) 1 месяц назад
100/100 спасибо
Анастасия БугаеваУченик (126) 4 недели назад
Я ТВОИ РУКИ ЦЕЛОВАЛА
Натан Мурзаев Знаток (374) 1 месяц назад
m = int(input())
n = int(input())
k = int(input())

# Находим максимальное число долек, которое может занимать один кусок
max_deli = m * n // k

# Случай, когда можно разделить шоколадку на k равных кусков
if (m * n) % k == 0:
print(max_deli)
else:
# Ищем наибольший прямоугольный кусок
for i in range(max_deli, 0, -1):
if (m * n) % i == 0 and (m * n) // i >= k:
print(i)
break
Даниил ПехГуру (4213) 4 недели назад
какие же вы тупые со своими нейросетями, даже не проверяете, что скидываете, клоун
Натан МурзаевЗнаток (374) 4 недели назад
"лишь бы написать"
Архип Уткин Ученик (166) 4 недели назад
n = int(input())
m = int(input())
k = int(input())
n, m = (reversed(sorted([n, m])))
i = 1
j = max([j for j in range(1, m + 1) if i * j + k <= n * m + 1])
ans = i * j
flag = True
while i + j:
if flag:
i += 1
flag = False
else:
j -= 1
if i > n or j <= 0:
break
if i * j + k <= n * m + 1:
flag = True
if ans + k < i * j + k:
ans = i * j
print(ans)
Даниял ТагировУченик (148) 4 недели назад
на скок баллов?
Даниял Тагиров, 100/100
Антон рвп Ученик (119) 4 недели назад
Продам ответы на 490 баллов

50 руб.

тг. sneja707
БРИНГА PLAY Чмыхалов Ученик (130) 4 недели назад
a = int(input())
b = int(input())
c = int(input())
a, b = (reversed(sorted([a, b])))
x = 1
y = max([y for y in range(1, b + 1) if x * y + c <= a * b + 1])
result = x * y
toggle = True

while x + y:
if toggle:
x += 1
toggle = False
else:
y -= 1
if x > a or y <= 0:
break
if x * y + c <= a * b + 1:
toggle = True
if result + c < x * y + c:
result = x * y

print(result)

100 баллов я получил
Вячеслав БахаревУченик (154) 4 недели назад
Слушай, сможешь помочь?
n = int(input())
m = int(input())
k = int(input())
z = int(max(n, m))
x = int(min(n, m))
a = round(k / z)
while k <= m*n and z <= 1000000:
if k == 0:
ans = x * z
elif (k < z) and k >= x:
z = z - 1
ans = z * x
elif k < x:
x = x - 1
ans = z * x
elif a > x:
z = z - a
else:
x = x - a
ans = z * x
break
print(ans)
Что я еще не учел?
Какие еще есть случаи?
Заранее Спасибо)
БРИНГА PLAY Чмыхалов Ученик (130) Вячеслав Бахарев, я не понимаю этот код. Для чего он? И сорян что долго не отвечал, я не часто пользуюсь mail ру
Похожие вопросы