Предмет: Информатика, автор: rraffella

СРОЧНО!!!!!!! ПОМОГИТЕ С ЗАДАНИЯМИ
Надо написать на 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​

Ответы

Автор ответа: korsa351
1

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)


rraffella: а можно ли это как-то без True, False, break, return и т. д. сделать, мы ещё не изучали этого?
Похожие вопросы
Предмет: Алгебра, автор: КорганГО