## Решения задач с КЗН (Файл: `КЗН_ИНФОРМАТИКА_май 2023.docx`) **№1.** Найдите все пятизначные числа, которые при делении на 133 дают в остатке 125, а при делении на 134 дают в остатке 111. **Решение:** ```Python for i in range(10_000, 99_999): if i % 133 == 125 and i % 134 == 111: print(i) ``` **№2.** Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в N-ную степень (где N – количество цифр в числе) равна самому числу. Например, 153 = 13 + 53 + 33. Найдите все трёхзначные Армстронга. **Решение:** ```Python print("3-x значные числа Армстронга:") for i in range(100, 999): s = 0 n = i while n > 0: decimal = n%10 s += decimal**3 n //= 10 if s == i: print(i) ``` **№3.** Натуральное число называется автоморфным, если оно равно последним цифрам своего квадрата. Например, 252 = 625. Напишите программу, которая получает натуральное число N и выводит на экран все автоморфные числа, не превосходящие N. **Решение:** ```Python print("Введите N:") n = int(input()) for i in range(1, n): num = str(i) num2 = str(i**2) if num2[-len(num)::] == num: # см. слайсы print(f"{num}*{num}={num2}") ``` **№4.** Напишите программу, которая получает два целых числа A и B (0 < A < B) и выводит квадраты всех натуральных чисел в интервале от A до B. **Решение:** ```Python print("Введите два целых числа:") a, b = input().split(" ") a, b = int(a), int(b) for i in range(a, b+1): print(f"{i}*{i}={i**2}") ``` **№5.** Напишите программу, которая получает два целых числа и находит их произведение, не используя операцию умножения. Учтите, что числа могут быть отрицательными. Пример: ``` Введите два числа: 10 -15 10*(-15)=-150 ``` **Решение:** ```Python print("Введите два целых числа:") a, b = input().split(" ") a, b = int(a), int(b) if b == 0: res = 0 else: res = int( a/(1/b) ) if b >= 0: print(f"{a}*{b}={res}") else: print(f"{a}*({b})={res}") ``` №6 (не будет на КЗН). Ввести натуральное число N и вычислить сумму всех чисел Фибоначчи, меньших N. Предусмотрите защиту от ввода отрицательного числа N. Пример: ``` Введите число N: 10000 Сумма 17709 ``` **Решение:** ```Python n = int(input("Введите число N: ")) if n <= 0: print("Программа принимает только натуральное число N") exit(0) f1, f2 = 1, 2 s = 0 while f1 < n: s += f1 f1, f2 = f2, f1+f2 print("Сумма", s) ``` №7 (не будет на КЗН). Дано натуральное число n. Вычислить: $$ (1 + \frac {1} {1^2})*(1 + \frac {1} {2^2}) * ... * (1 + \frac {1} {n^2}) $$ **Решение:** ```Python n = int(input("Введите число N: ")) if n <= 0: print("Программа принимает только натуральные числа N") exit(0) m = 1 for i in range(1, n+1): m *= (1 + 1/i**2) print(f"Произведение: {m}") ``` **№8.** Ввести натуральное число и найти сумму его цифр. Пример: ``` Введите натуральное число: 12345 Сумма цифр 15. ``` **Решение:** ```Python n = int(input("Введите число N: ")) s = 0 while n > 0: digit = n % 10 s += digit n //= 10 print("Сумма цифр", s) ``` **№9.** Ввести натуральное число и определить, верно ли, что в его записи есть две одинаковые цифры, стоящие рядом. Пример: ``` Введите натуральное число: 12342 Нет. ``` Пример: ``` Введите натуральное число: 12245 Да. ``` **Решение:** ```Python n = input("Введите натуральное число: ") for i in range(1, len(n)): if n[i] == n[i-1]: print("Да.") break # Выходим из цикла else: # Выполнится, если цикл завершился без break print("Нет.") ``` **№10.** Ввести натуральное число и определить, верно ли, что в его записи есть две одинаковые цифры (не обязательно стоящие рядом). Пример: ``` Введите натуральное число: 12342 Да. ``` Пример: ``` Введите натуральное число: 12345 Нет. ``` **Решение:** ```Python n = input("Введите натуральное число: ") digits = [] unique_digits = set() for digit in n: """ Добавляем элементы в список digits и множество unique_digits. Последнее содержит только уникальные элементы, в отличии от списка. Следовательно, если есть повторяющиеся числа, значит количество элементов в списке и множетсве будет различным. """ digits.append(digit) unique_digits.add(digit) if len(digits) != len(unique_digits): print("Да.") else: print("Нет.") ```