11-сынып
оқушыларына арналған информатика олимпиадасына дайындық тапсырмалары
Тесттер әртүрлі тақырыптарды
қамтиды: алгоритмдер, мәліметтер құрылымы, программалау, логика
және комбинаторика.
1. Есептер
жинағы:
1. Алгоритмдер
1. Сұрақ:
Төмендегі алгоритм қандай функцияны орындайды?
def func(n):
if n == 0:
return 1
return n * func(n - 1)
A) Фибоначчи
сандарын есептейді
B) Санның
факториалын есептейді
C) Жай санды
тексереді
D) Санның
квадратын есептейді
2. Сұрақ: Берілген
массивті қайталанатын элементтерден тазалау үшін Python-да қандай
деректер құрылымын қолданған дұрыс?
A) List
B) Set
C) Tuple
D) Dictionary
2. Мәліметтер құрылымы
3. Сұрақ: Жазылған
деректерді "FIFO" тәртібімен сақтау үшін
қандай мәліметтер құрылымы қолданылады?
A) Кезек (Queue)
B) Стек (Stack)
C) Деректер ағашы (Tree)
D) Граф (Graph)
4. Сұрақ: Екілік іздеу
алгоритмы қандай шарт орындалғанда қолданылады?
A) Массив сұрыпталмаған кезде
B) Массив сұрыпталған кезде
C) Қайталанатын
элементтер болған кезде
D) Массив бос
болған кезде
3.
Программалау
5. Сұрақ:
Төмендегі кодтың нәтижесі қандай?
numbers = [1, 2, 3, 4, 5]
print(numbers[2:])
A) [1, 2]
B) [2, 3]
C) [3, 4, 5]
D) Қате шығады
6. Сұрақ: Төмендегі цикл
қандай әрекет орындайды?
for i in range(5, 1, -1):
print(i)
A) 5-тен 1-ге
дейін сандарды арттыру
B) 5-тен 2-ге
дейін сандарды азайту
C) Қате шығады
D) 1-ден 5-ке
дейін сандарды арттыру
4. Логика
7. Сұрақ: Берілген
логикалық өрнекті жеңілдетіңіз:
(A AND B) OR (A AND NOT B)
A) A
B) B
C) A OR B
D) Қате
8. Сұрақ: Қандай жағдайда
XOR операциясы нәтижесінде "1" шығады?
A) Екі бит бірдей болғанда
B) Екі бит әртүрлі болғанда
C) Бәрі "0"
болғанда
D) Қате
5.
Комбинаторика
9. Сұрақ: 5
элементтен тұратын жиыннан 3 элемент таңдау саны қанша?
A) 10
B) 15
C) 20
D) 30
10. Сұрақ: 4
таңбалы құпия код қанша түрлі болуы мүмкін, егер әрбір таңба 0-ден
9-ға дейінгі сандардың біреуі болса?
A) 10 000
B) 9 999
C) 1 000
D) 100
---
2. Қосымша
сұрақтар:
11. Функция
анализі: Төмендегі функция қандай уақыт күрделілігіне ие?
def find_max(arr):
max_val = arr[0]
for num in arr:
if num > max_val:
max_val = num
return max_val
A) O(1)
B) O(n)
C) O(n^2)
D) O(log n)
12. Рекурсия:
Қандай жағдайда рекурсия тиімсіз болуы мүмкін?
A) Егер стек өте
көп пайдаланса
B) Егер деректер
сұрыпталған болса
C) Егер массив
кішкентай болса
D) Егер
айнымалылар болмаса
1. Фибоначчи
сандары (Рекурсия және динамикалық бағдарламалау)
Мәселе: -ші
Фибоначчи санын есептейтін бағдарлама жазыңыз.
Кіріс: (0 ≤ ≤
50).
Шығыс: -ші
Фибоначчи саны.
Мысал:
Кіріс: 7
Шығыс: 13
Python шешімі:
def fibonacci(n):
dp = [0] * (n + 1)
dp[0] = 0
if n > 0:
dp[1] = 1
for i in range(2, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]
n = int(input("n енгізіңіз:
"))
print(f"{n}-ші Фибоначчи саны:",
fibonacci(n))
---
2. Екілік жүйеге түрлендіру
Мәселе: Берілген ондық санды екілік жүйеге түрлендіретін
бағдарлама жазыңыз.
Кіріс: (0 ≤ ≤ 10^6).
Шығыс: -нің екілік түрі.
Мысал:
Кіріс: 10
Шығыс: 1010
Python шешімі:
def to_binary(n):
return bin(n)[2:]
n = int(input("Ондық санды енгізіңіз: "))
print(f"{n}-нің екілік жүйесі:",
to_binary(n))
---
3. Симметриялық сан (Palindrome)
Мәселе: Берілген санның симметриялық сан (палиндром) екенін
анықтаңыз.
Кіріс: (1 ≤ ≤ 10^6).
Шығыс: Иә немесе Жоқ.
Мысал:
Кіріс: 121
Шығыс: Иә
Python шешімі:
def is_palindrome(n):
s = str(n)
return s == s[::-1]
n = int(input("Сан енгізіңіз:
"))
print("Иә" if is_palindrome(n)
else "Жоқ")
---
4. Ең үлкен ортақ бөлгіш (ЕҮОБ)
Мәселе: Екі санның ЕҮОБ табыңыз.
Кіріс: (1 ≤ ≤ 10^9).
Шығыс: ЕҮОБ мәні.
Мысал:
Кіріс: 36 60
Шығыс: 12
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))
---
5. Санды жай көбейткіштерге жіктеу
Мәселе: Берілген санды жай көбейткіштерге
жіктеңіз.
Кіріс: (2 ≤ ≤ 10^6).
Шығыс: Жай көбейткіштер тізімі.
Мысал:
Кіріс: 60
Шығыс: 2, 2, 3, 5
Python шешімі:
def prime_factors(n):
factors = []
i = 2
while i * i <= n:
while n % i == 0:
factors.append(i)
n //= i
i += 1
if n > 1:
factors.append(n)
return factors
n = int(input("Сан енгізіңіз:
"))
print("Жай көбейткіштер:",
prime_factors(n))
---
6. Үшбұрыш бар ма?
Мәселе: Үш бүтін сан үшбұрыштың қабырғалары бола алатынын
анықтаңыз.
Кіріс: (1 ≤ ≤ 10^3).
Шығыс: Иә немесе Жоқ.
Мысал:
Кіріс: 3 4 5
Шығыс: Иә
Python шешімі:
def is_triangle(a, b, c):
return a + b > c and a + c > b and b + c >
a
a, b, c = map(int, input("Үш санды енгізіңіз
(a b c): ").split())
print("Иә" if is_triangle(a, b,
c) else "Жоқ")
---
7. Массивтің ең үлкен қосындысы
Мәселе: Массивтегі үздіксіз элементтердің ең үлкен
қосындысын табыңыз.
Кіріс: және массив
элементтері (-10^5 ≤ элемент ≤ 10^5).
Шығыс: Ең үлкен
қосынды.
Мысал:
Кіріс: 5 және [-2,
1, -3, 4, -1]
Шығыс: 4
Python шешімі:
def max_subarray_sum(arr):
max_sum = arr[0]
current_sum = arr[0]
for num in arr[1:]:
current_sum = max(num, current_sum + num)
max_sum = max(max_sum, current_sum)
return max_sum
arr = list(map(int, input("Массив элементтерін
енгізіңіз: ").split()))
print("Ең үлкен қосынды:",
max_subarray_sum(arr))
---
8. Матрицадағы минималды жол
Мәселе: Берілген матрицада жоғарғы сол жақтан төменгі оң
жаққа минималды жолдың қосындысын табыңыз.
Кіріс: Матрица өлшемі және оның элементтері.
Шығыс: Минималды қосынды.
Python шешімі:
def min_path_sum(matrix):
n, m = len(matrix), len(matrix[0])
dp = [[0] * m for _ in range(n)]
dp[0][0] = matrix[0][0]
for i in range(1, n):
dp[i][0] = dp[i - 1][0] + matrix[i][0]
for j in range(1, m):
dp[0][j] = dp[0][j - 1] + matrix[0][j]
for i in range(1, n):
for j in range(1, m):
dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) +
matrix[i][j]
return dp[-1][-1]
matrix = [
[1, 3, 1],
[1, 5, 1],
[4, 2, 1]
]
print("Минималды жол қосындысы:",
min_path_sum(matrix))
---
Бұл есептер
олимпиада форматындағы күрделілік деңгейіне сай жасалған.