Files
gkl_test_week/README.md

165 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Решения задач с КЗН (Файл: `КЗННФОРМАТИКАай 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 = 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}")
```
<div style="color: red;"><b>6.<b></div> (не будет на КЗН) Ввести натуральное число 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)
```
<div style="color: red;"><b>7.<b></div> (не будет на КЗН) Дано натуральное число 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("Нет.")
```