Задача на деление шоколадки
Задача . Условие Шоколадка имеет вид прямоугольника, разделенного на n×m долек. Шоколадку можно один раз разломить по прямой на две части. Определите, можно ли таким образом отломить от шоколадки часть, состоящую ровно из k долек. Программа получает на вход три числа: n, m, k и должна вывести YES или NO. С некоторыми тестами работает с другими нет:
n = int(input())
m = int(input())
k = int(input())
area = n * m
last = area - k
full_m = k / n
if full_m == (area - last):
print('YES')
else:
print('NO')
Ответы (5 шт):
если шоколадка 4*3 и мы можем отламывать только строки или только столбцы, то нам и нужно посчитать сумму всех возможных столбцов (в нашем случае это 3, 6, 9, 12) и сумму строк (4, 8, 12). Если k совпадает с одним из этих чисел, то ответ "Да".
(В большинстве учебных примеров не нужно стараться вывести целиком формулу ответа. Разбивайте большую задачу на мелкие до тех пор, пока они не становятся тривиальными.)
Если к делится на м или н без остатка, то YES.
Ну и разумеется, к должно быть меньше м * н.
n = int(input())
m = int(input())
k = int(input())
if k < m*n and (k%m==0 or k%n==0):
print('YES')
else:
print('NO')
Но интереснее вариант, когда ломать можно хотя бы пару раз :)
n=int(input())
m=int(input())
k=int(input())
if n*m<k or k==n*m:
print ('NO')
elif k%m==0 or k%n==0:
print ('YES')
else:
print ('NO')
Условие
k==n*m --> NO важно так как в случае если проверять только по кратности то шоколадку 3x1 можно будет разделить так чтобы в ней осталось 3 части
Либо так записать
n = int(input())
m = int(input())
k = int(input())
if k <= m*n and (k%m==0 or k%n==0):
print('YES')
else:
print('NO')
n = int(input())
m = int(input())
k = int(input())
oppor_vert = "NO"
oppor_hor = "NO"
for x in range (n-1):
left = (x+1)*m
right = n*m - left
if k == left or k == right:
oppor_vert = ("YES")
for y in range (m-1):
up = (y+1)*n
down = n*m - up
if k == up or k == down:
oppor_hor = "YES"
if oppor_hor == "YES" or oppor_vert == "YES":
print ("YES")
else:
print("NO")