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))
жүктеу мүмкіндігіне ие боласыз
Бұл материал сайт қолданушысы жариялаған. Материалдың ішінде жазылған барлық ақпаратқа жауапкершілікті жариялаған қолданушы жауап береді. Ұстаз тілегі тек ақпаратты таратуға қолдау көрсетеді. Егер материал сіздің авторлық құқығыңызды бұзған болса немесе басқа да себептермен сайттан өшіру керек деп ойласаңыз осында жазыңыз
11-сынып оқушыларына олимпиадаға дайындық тапсырмалары
11-сынып оқушыларына олимпиадаға дайындық тапсырмалары
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))
шағым қалдыра аласыз













