Python

Питон. Задача на "шары в разных кучах". Но имхо даже понятие не имею как тут решать. Ибо много условий и проверок

В корзине лежат шары. Если разложить их в кучи по два, останется один. Если разложить в кучи по три, останется один. Если разложить в кучи по четыре, останется один. Если разложить в кучи по пять, останется один. Если разложить в кучи по шесть, останется один. Если разложить в кучи по семь, не будет остатка. Нужно найти минимальное количество шаров, удовлетворяющее условию.
НОК (2, 3, 4, 5, 6) = 60
Следовательно, надо найти минимальное число вида 60 * m + 1, которое делится на 7.
Из условия деления на 7 эти числа должны иметь вид 21 + 70 * n.
60 * m + 1 = 21 + 70 * n
6 * m = 2 + 7 * n
(2 + 7 * n) % 6 = 0
с скобках должно быть чётное число, потому выражение преобразуется в:
(2 + 14 * k) % 6 = 0
и сокращается до:
(1 + 7 * k) % 3 = 0

Весь код:

i = 1
while i % 3: i += 7
print(i * 20 + 1)
ПЕ
Парадоксов Евгений
67 791
Лучший ответ
Ишангазы Ережепов здравствуйте, очень нужна ваша помощь по ускорению работы код (не проходит лимит по времени) https://otvet.mail.ru/question/223449324
Безо всяких размышлений

n=1
while (n*60+1)%7!=0: n+=1
print (n*60+1)
Максим *****
Максим *****
98 280
Надо найти минимальное число, которое делится и на 2, и на 3, и на 4, и на 5, и на 6, и взять на 1 больше.

60 → 61. Но 61 не делится на 7...
121...
181...
241...
301 / 7 = 43.

Нашлось за нескольк секунд, в уме.

В коде это можно написать так:

nums = [2, 3, 4, 5, 6]
i = 0
while True:
    i += 1
    found = True
    for n in nums:
        found = found and i % n == 0

    if found: break

n = i
while (n + 1) % 7 != 0: n += i

print( n + 1 ) # 301
Nika Anjaparidze
Nika Anjaparidze
62 360
x=0
while True:
x=x+1
if x%2==1 and x%3==1 and x%4==1 and
x%5==1 and x%6==1 and x%7==0:
print(x)
quit()
def DelitsyaBezOstatka(x,y):
if 0 == (x % y):
return True
else:
return False

def DelitsyaSOstatkom(x,y,z):
if z != (x % y):
return False
else:
return True

i=7
while (DelitsyaSOstatkom(i,2,1))&(DelitsyaSOstatkom(i,3,1))&(DelitsyaSOstatkom(i,4,1))&(DelitsyaSOstatkom(i,5,1))&(DelitsyaSOstatkom(i,6,1))&(DelitsyaBezOstatka(i,7))==False:
i +=1
print(i)
Polkovnik- Martin
Polkovnik- Martin
137