Files
gkl_test_week/README.md

6.2 KiB
Raw Blame History

Решения задач с КЗН (Файл: КЗННФОРМАТИКАай 2023.docx)

№1. Найдите все пятизначные числа, которые при делении на 133 дают в остатке 125, а при делении на 134 дают в остатке 111.
Решение:

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. Найдите все трёхзначные Армстронга.
Решение:

print("3-x значные числа Армстронга:")
for i in range(100, 999):
    s = 0
    n = i
    while n > 0:
        decimal = n%10
        s += decimal**3
        n = n//10
    if s == i:
        print(i)

№3. Натуральное число называется автоморфным, если оно равно последним цифрам своего квадрата. Например, 252 = 625. Напишите программу, которая получает натуральное число N и выводит на экран все автоморфные числа, не превосходящие N.
Решение:

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.
Решение:

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+{1 \over 1_^2^})*(1+{1 \over 2_^2^}) ... (1+{1 \over 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("Нет.")