СРОЧНО!!!!!!! ПОМОГИТЕ С ЗАДАНИЯМИ
Надо написать на Python, используя циклы:
Вложенные циклы
Уровень A. В магазине продается мастика в ящиках по 15 кг, 17 кг, 21 кг. Как купить ровно 185 кг мастики, не вскрывая ящики? Сколькими способами можно это сделать?
Уровень B. Ввести натуральное число N и вывести все натуральные числа, не превосходящие N и делящиеся на каждую из своих цифр.
Пример:
Введите N:
15
1 2 3 4 5 6 7 8 9 11 12 15
Уровень C. Напишите программу, которая получает натуральные числа A и B (A<B) и выводит все простые числа на отрезке [A; B].
Пример:
Введите границы диапазона:
10 20
11 13 17 19
Уровень D. Напишите программу, которая получает натуральные числа A и B (A<B) и выводит все на отрезке [A; B], у которых ровно 4 разных делителя.
Пример:
Введите границы диапазона:
10 20
10 14 15
Ответы
A level (алгоритм долгий по времени)
a, b, c, n = map(int, input().split())
shopping_options = []
for ka in range((n // a)+1):
if ka * a > n:
break
elif ka * a == n:
shopping_options.append([ka, 0, 0])
break
for kb in range((n // b)+1):
if ka * a + kb * b > n:
break
elif ka * a + kb * b == n:
shopping_options.append([ka, kb, 0])
break
for kc in range((n // c)+1):
if ka*a+kb*b+kc*c == n:
shopping_options.append([ka, kb, kc])
elif ka*a+kb*b+kc*c > n:
break
print(len(shopping_options))
for index in range(len(shopping_options)):
print(*shopping_options[index])
B level:
def divisiblity(a: int) -> bool:
for number in str(a):
try:
a % int(number)
except ZeroDivisionError:
return False
if a % int(number) == 0:
pass
else:
return False
return True
n = int(input())
sequence = []
for i in range(1, n+1):
if divisiblity(i):
sequence.append(i)
print(*sequence)
C level:
def is_Prime(a: int) -> bool:
for i in range(2, (a//2)+1):
if a % i == 0:
return False
return True
start, end = map(int, input().split())
seq_of_simp_numb = []
for g in range(start, end+1):
if is_Prime(g):
seq_of_simp_numb.append(g)
print(*seq_of_simp_numb)
D level:
def four_divisors(a: int) -> bool:
divisors = 0
for i in range(1, a//2+1):
if a % i == 0:
divisors += 1
if divisors > 4:
return False
divisors += 1
return divisors == 4
start, end = map(int, input().split())
sequence = []
for g in range(start, end+1):
if four_divisors(g):
sequence.append(g)
print(*sequence)