178 lines
6.2 KiB
Markdown
178 lines
6.2 KiB
Markdown
## Решения задач с КЗН (Файл: `КЗН_ИНФОРМАТИКА_май 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}")
|
||
```
|
||
|
||
<span style="color: red;"><b>№6</b></span> (не будет на КЗН). Ввести натуральное число 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)
|
||
```
|
||
<span style="color: red;"><b>№7</b></span> (не будет на КЗН). Дано натуральное число 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("Нет.")
|
||
```
|
||
|