11-сынып
оқушыларына олимпиадаға дайындық
тапсырмалары
1. Екі санның ең
үлкен ортақ бөлгішін (ЕҮОБ) табу
Шарт:
Берілген және
сандарының ең үлкен ортақ бөлгішін табыңыз. Алгоритмді Евклид әдісі
арқылы жүзеге асырыңыз.
Шешімі (Python):
def gcd(a, b):
while b:
a, b = b, a % b
return a
a, b = map(int, input("a және b сандарын енгізіңіз:
").split())
print("ЕҮОБ:", gcd(a,
b))
---
2. Палиндром сандарды санау
Шарт:
Берілген
аралықтағы () барлық палиндром сандарды
анықтап, олардың санын
шығарыңыз.
Шешімі (Python):
def is_palindrome(n):
return str(n) == str(n)[::-1]
L, R = map(int, input("L және R мәндерін енгізіңіз:
").split())
count = sum(1 for x in range(L, R + 1) if
is_palindrome(x))
print("Палиндром
сандар саны:", count)
---
3. Квадраттық
теңдеу шешімі
Шарт:
Берілген
квадраттық теңдеу: . Коэффициенттері арқылы теңдеудің шешімдерін
табыңыз.
Шешімі
(Python):
import math
a, b, c =
map(float, input("a, b, c коэффициенттерін енгізіңіз:
").split())
discriminant = b**2 - 4 * a * c
if discriminant > 0:
x1 = (-b + math.sqrt(discriminant)) / (2 * a)
x2 = (-b - math.sqrt(discriminant)) / (2 * a)
print("Екі шешім:", x1,
x2)
elif discriminant == 0:
x = -b / (2 * a)
print("Бір шешім:", x)
else:
print("Шешімі жоқ")
---
4. Ең ұзын өспелі ішкі тізбекті табу
Шарт:
Берілген массивтен
ең ұзын өспелі ішкі тізбекті табыңыз.
Шешімі (Python):
def longest_increasing_subsequence(arr):
n = len(arr)
dp = [1] * n
for i in range(1, n):
for j in range(i):
if arr[i] > arr[j]:
dp[i] = max(dp[i], dp[j] + 1)
return max(dp)
arr = list(map(int, input("Массив элементтерін
енгізіңіз: ").split()))
print("Ең ұзын өспелі тізбек ұзындығы:", longest_increasing_subsequence(arr))
---
5. Сандарды
қарапайым сұрыптау (сандарды өсу ретімен)
Шарт:
Берілген тізімдегі
сандарды өсу ретімен сұрыптаңыз (Bubble Sort қолданыңыз).
Шешімі (Python):
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
arr = list(map(int, input("Массив элементтерін
енгізіңіз: ").split()))
sorted_arr = bubble_sort(arr)
print("Сұрыпталған массив:",
sorted_arr)
6. Динамикалық бағдарламалау: Рюкзак мәселесі (Knapsack
Problem)
Шарт:
Берілген заттардың
салмағы () және құндылығы (), рюкзактың максималды салмағы () арқылы рюкзакқа сыйғызуға болатын максималды
құндылықты табыңыз.
Шешімі (Python):
def knapsack(W, weights, values, n):
dp = [[0] * (W + 1) for _ in range(n + 1)]
for i in range(1, n + 1):
for w in range(W + 1):
if weights[i - 1] <= w:
dp[i][w] = max(dp[i - 1][w], dp[i - 1][w - weights[i - 1]]
+ values[i - 1])
else:
dp[i][w] = dp[i - 1][w]
return dp[n][W]
n = int(input("Заттар саны:
"))
weights = list(map(int, input("Заттардың
салмағы: ").split()))
values = list(map(int, input("Заттардың
құндылығы: ").split()))
W = int(input("Рюкзактың максималды
салмағы: "))
print("Максималды құндылық:",
knapsack(W, weights, values, n))
---
7. Санның цифрларын көбейту
Шарт:
Берілген санның
цифрларын көбейтіп, нәтижесін
табыңыз.
Шешімі (Python):
def multiply_digits(n):
result = 1
while n > 0:
result *= n % 10
n //= 10
return result
n = int(input("Санды енгізіңіз:
"))
print("Цифрлар көбейтіндісі:",
multiply_digits(n))