Версия для печати и копирования в MS Word
1
Задания Д25 C2 № 9209
Дан массив, содержащий неотрицательные целые числа. Если сумма всех элементов массива чётная, нужно вывести количество чётных (по значению) элементов массива, если нечётная – количество нечётных.
Например, для массива из 6 элементов, равных соответственно 2, 6, 12, 17, 3, 8, ответом будет 4 – количество чётных элементов, так как общая сумма всех элементов чётна.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже.
Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Бейсик | Паскаль |
---|---|
CONST N=2000 DIM A(N) AS INTEGER DIM I, K AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END … END |
const N=2000; var a: array [1..N] of integer; i, k: integer; begin for i:=1 to N do readln(a[i]); … end. |
Алгоритмический язык | Python |
алг нач цел N=2000 | Изменять значение целтаб a[1:N] цел i, k нц для i от 1 до N ввод a[i] кц … кон |
// допускается также использовать // целочисленные переменные i, k a = [] N=2000 //менять значение N нельзя for i in range(0, N): a.append(int(input())) … |
Си++ | |
#include <iostream> using namespace std; #define N 2000 int main(){ int a[N]; int i, k; for (i=0; i < N; i++) cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.
Загрузка решений доступна для зарегистрировавшихся пользователей
2
Задания Д25 C2 № 9317
Дан массив, содержащий неотрицательные целые числа. Если сумма всех элементов массива чётная, нужно вывести количество нечётных (по значению) элементов массива, если нечётная – количество чётных.
Например, для массива из 6 элементов, равных соответственно 2, 6, 12, 17, 3, 8, ответом будет 2 – количество нечётных элементов, так как общая сумма всех элементов чётна.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Бейсик | Паскаль |
---|---|
CONST N=2000 DIM A(N) AS INTEGER DIM I, K AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END … END |
const N=2000; var a: array [1..N] of integer; i, k: integer; begin for i:=1 to N do readln(a[i]); … end. |
Алгоритмический язык | Python |
алг нач цел N=2000 | Изменять значение целтаб a[1:N] цел i, k нц для i от 1 до N ввод a[i] кц … кон |
# допускается также использовать # целочисленные переменные i, k a = [] n=2000 #менять значение n нельзя for i in range(0, n): a.append(int(input())) … |
Си++ | |
#include <iostream> using namespace std; #define N 2000 int main(){ int a[N]; int i, k; for (i=0; i < N; i++) cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.
Загрузка решений доступна для зарегистрировавшихся пользователей
3
Задания Д25 C2 № 9811
Дан массив, содержащий 2015 неотрицательных целых чисел. Ямой называется не крайний элемент массива, который меньше обоих своих соседей. Необходимо найти в массиве самую глубокую яму, то есть яму, значение которой минимально. Если в массиве нет ни одной ямы, ответ считается равным 0.
Например, в массиве из шести элементов, равных соответственно 4, 9, 2, 17, 3, 8, есть две ямы – 2 и 3, самая глубокая яма – 2.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Бейсик | Python |
---|---|
CONST N=2015 DIM A(N) AS INTEGER DIM I, J, K AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
//допускается также использо- // вание целочисленных // переменных j, k a = [] n = 2015 // менять значение n нельзя for i in range(0, n): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const N=2015; var a: array [1..N] of integer; i, j, k: integer; begin for i:=1 to N do readln(a[i]); … end. |
алг нач цел N=2015| Изменять значение этой переменной нельзя целтаб a[1:N] цел i, j, k нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; #define N 2015 int main(){ int a[N]; int i, j, k; for (i=0; i < N; i++) cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.4) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
Загрузка решений доступна для зарегистрировавшихся пользователей
4
Задания Д25 C2 № 2914
Опишите на русском языке или на одном из языков программирования алгоритм вычисления разности между средним арифметическим максимального и минимального значений элементов заданного целочисленного массива из 30 элементов и средним арифметическим всех элементов этого массива.
Исходные данные объявлены так, как показано ниже.
Бейсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, MIN, MAX, SUM AS INTEGER DIM SRED1,SRED2 AS SINGLE FOR I = 1 TO N INPUT A(I) NEXT I … END |
uses crt; const n=30; type massiv=array[1..n] of integer; var a:massiv; min,max,i,sum:integer; sred1,sred2:real; Begin for i:=1 to n do begin write(‘a[‘,i,’]= ‘);readln(a[i]); end; … end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; #define N 30 int main(void) { int a[N]; int min,max,i,sum; float sred1,sred2; for (i=0; i < N; i++) cin >> a[i]; … } |
алг нач цел N = 30 целтаб a[1:N] цел min,max,i,sum вещ sred1,sred2 нц для i от 1 до N ввод a[i] кц … кон |
Русский (естественный) язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные min,max,i,sum. Объявляем вещественную переменную sred1,sred2. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … |
|
Python | |
# допускается также # использовать # целочисленные переменные min,max,i,sum # и вещественные переменные sred1,sred2 a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
Загрузка решений доступна для зарегистрировавшихся пользователей
5
Задания Д25 C2 № 2909
Опишите на русском языке или на одном из языков программирования алгоритм подсчета суммы всех отрицательных элементов заданного целочисленного массива размером 30 элементов. Если отрицательных элементов нет, сообщите об этом.
Исходные данные объявлены так, как показано ниже.
Бейсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, S AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
const N=30; var a: array [1..N] of integer; i, s: integer; begin for i:=1 to N do readln(a[i]); … end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; #define N 30 int main(void) { int a[N]; int i, s; for (i=0; i < N; i++) cin >> a[i]; … } |
алг нач цел N = 30 целтаб a[1:N] цел i, s нц для i от 1 до N ввод a[i] кц … кон |
Русский (естественный) язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … |
|
Python | |
# допускается также # использовать # целочисленную переменную s a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
Загрузка решений доступна для зарегистрировавшихся пользователей
6
Задания Д25 C2 № 2901
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет подсчитать и вывести среднее арифметическое элементов массива, имеющих нечетное значение. Гарантируется, что в исходном массиве хотя бы один элемент имеет нечетное значение.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бейсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, X, Y AS INTEGER DIM S AS SINGLE FOR I = 1 TO N INPUT A(I) NEXT I … END |
const N=30; var a: array [1..N] of integer; i, x, y: integer; s: real; begin for i:=1 to N do readln(a[i]); … end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; #define N 30 int main(void) { int a[N]; int i, x, y; float s; for (i=0; i < N; i++) cin >> a[i]; … } |
алг нач цел N = 30 целтаб a[1:N] цел i, x, y вещ s нц для i от 1 до N ввод a[i] кц … кон |
Русский (естественный) язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … |
|
Python | |
# допускается также # использовать две # целочисленные переменные x, y # и вещественную переменную s a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
В качестве ответа необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
Загрузка решений доступна для зарегистрировавшихся пользователей
7
Задания Д25 C2 № 2921
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет подсчитать и вывести среднее арифметическое элементов массива, имеющих нечетное значение. Гарантируется, что в исходном массиве хотя бы один элемент имеет нечетное значение.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бэйсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, X, Y AS INTEGER DIM S AS SINGLE FOR I = 1 TO N INPUT A(I) NEXT I … END |
const N=30; var a: array [1..N] of integer; i, x, y: integer; s: real; begin for i:=1 to N do readln(a[i]); … end. |
Си++ | Естественный язык |
#include <iostream> using namespace std; #define N 30 int main(void) {int a[N]; int i, x, y; float s; for (i=0; i<N; i++) cin >> a[i]; … } |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … |
Python | |
# допускается также # использовать две # целочисленные переменные x, y # и вещественную переменную s a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать переменные, аналогичные переменным, используемым в алгоритме, записанном на естественном языке, с учетом синтаксиса и особенностей используемого вами языка программирования.
Загрузка решений доступна для зарегистрировавшихся пользователей
8
Задания Д25 C2 № 2925
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от -1000 до 1000. Опишите на русском или на одном из языков программирования алгоритм, который позволяет подсчитать и вывести среднее арифметическое тех элементов массива, которые по своему значению меньше последнего элемента этого массива. Гарантируется, что в исходном массиве есть хотя бы один такой элемент. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бейсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, X, Y AS INTEGER DIM S AS SINGLE FOR I = 1 TO N INPUT A(I) NEXT I … END |
const N=30; var a: array [1..N] of integer; i, x, y: integer; s: real; begin for i:=1 to N do readln(a[i]); … end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; #define N 30 int main(void) { int a[N]; int i, x, y; float s; for (i=0; i < N; i++) cin >> a[i]; … } |
алг нач цел N = 30 целтаб a[1:N] цел i, x, y вещ s нц для i от 1 до N ввод a[i] кц … кон |
Русский (естественный) язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … |
|
Python | |
# допускается также # использовать две # целочисленные переменные x, y # и вещественную переменную s a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать переменные, аналогичные переменным, используемые в алгоритме, записанном на естественном языке, с учетом синтаксиса и особенностей используемого вами языка программирования.
Загрузка решений доступна для зарегистрировавшихся пользователей
9
Задания Д25 C2 № 2912
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет подсчитать и вывести среднее арифметическое элементов массива, имеющих нечетное значение. Гарантируется, что в исходном массиве хотя бы один элемент имеет нечетное значение.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бейсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, X, Y AS INTEGER DIM S AS SINGLE FOR I = 1 TO N INPUT A(I) NEXT I … END |
const N=30; var a: array [1..N] of integer; i, x, y: integer; s: real; begin for i:=1 to N do readln(a[i]); … end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; #define N 30 int main(void) { int a[N]; int i, x, y; float s; for (i=0; i < N; i++) cin >> a[i]; … } |
алг нач цел N = 30 целтаб a[1:N] цел i, x, y вещ s нц для i от 1 до N ввод a[i] кц … кон |
Русский (естественный) язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … |
|
Python | |
# допускается также # использовать две # целочисленные переменные x, y # и вещественную переменную s a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Borland Pascal 7.0) или в виде блок─схемы. В этом случае вы должны использовать переменные, аналогичные переменным, используемым в алгоритме, записанном на естественном языке, с учетом синтаксиса и особенностей используемого вами языка программирования.
Загрузка решений доступна для зарегистрировавшихся пользователей
10
Задания Д25 C2 № 3622
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать произвольные значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит сумму элементов самой длинной возрастающей последовательности подряд идущих элементов массива.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бэйсик | Паскаль |
---|---|
N = 40 DIM A(N) AS INTEGER DIM I, L, LMAX, S, SMAX AS INTEGER FOR I = 1 TO N INPUT A (I) NEXT I … END |
const N = 40; var a: array [1..N] of integer; i, l, lmax, s, smax: integer; begin for i : = 1 to N do readln(a[i]); … end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; #define N 40 int main(void) {int a [N]; int i, l, lmax, s, smax; for (i = 0; i < N; i++) cin >> a[i]; … } |
алг нач цел N = 40 целтаб а[1:N] цел i, L, Lmax, S, Smax нц для i от 1 до N ввод a[i] кц … кон |
Естественный язык | |
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, L, Lmax, S, Smax. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й. … |
|
Python | |
# допускается также # использовать четыре # целочисленные переменные l, lmax, s, smax a = [] n = 40 for i in range(0, n): a.append(int(input())) … |
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка програм-мирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
Загрузка решений доступна для зарегистрировавшихся пользователей
11
Задания Д25 C2 № 3638
Опишите на русском языке или одном из языков программирования алгоритм подсчета среднего значения отрицательных элементов в целочисленном массиве из 30 элементов в предположении, что в нем есть хотя бы один отрицательный элемент.
Загрузка решений доступна для зарегистрировавшихся пользователей
12
Задания Д25 C2 № 3790
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет подсчитать и вывести среднее арифметическое элементов массива, имеющих нечетное значение. Гарантируется, что в исходном массиве хотя бы один элемент имеет нечетное значение.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бейсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, X, Y AS INTEGER DIM S AS SINGLE FOR I = 1 TO N INPUT A(I) NEXT I … END |
const N=30; var a: array [1..N] of integer; i, x, y: integer; s: real; begin for i:=1 to N do readln(a[i]); … end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; #define N 30 int main(void) { int a[N]; int i, x, y; float s; for (i=0; i < N; i++) cin >> a[i]; … } |
алг нач цел N = 30 целтаб a[1:N] цел i, x, y вещ s нц для i от 1 до N ввод a[i] кц … кон |
Русский (естественный) язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … |
|
Python | |
# допускается также # использовать две # целочисленные переменные x, y # и вещественную переменную s a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
В качестве ответа необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
Загрузка решений доступна для зарегистрировавшихся пользователей
13
Задания Д25 C2 № 5289
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 1000. Элемент массива называется хорошим, если это двузначное число, причём цифра в разряде десятков больше, чем цифра в разряде единиц. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести сумму всех хороших элементов массива.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бэйсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, J, S AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
const N=30; var a: array [1..N] of integer; i, j, s: integer; begin for i:=l to N do readln(a[i]); … end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; #define N 30 int main(){ int a[N]; int i, j, s; for (i=0; i < N; i++) cin >> a[i]; … |
алг нач цел N=30 целтаб а[1:N] цел i, j, s нц для i от 1 до N ввод а[i] кц … кон |
Python | |
# допускается также # использовать две # целочисленные переменные j, s a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.4) или в виде блок-схемы. В этом случае вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Загрузка решений доступна для зарегистрировавшихся пользователей
14
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от −20 до 20 — сведения о температуре за каждый день ноября. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет подсчитать и вывести среднюю температуру среди дней, когда были заморозки (температура опускалась ниже 0 °C). Гарантируется, что хотя бы в один день ноября была отрицательная температура.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бейсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, X, Y AS INTEGER DIM S AS SINGLE FOR I = 1 TO N INPUT A(I) NEXT I … END |
const N=30; var a: array [1..N] of integer; i, x, y: integer; s: real; begin for i:=1 to N do read (a[i]); … end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; #define N 30 int main(void) {int a[N]; int i, x, y; float s; for (i=0; i < N; i++) cin >> a[i]; … } |
алг нач цел N = 30 целтаб a[1:N] цел i, x, y вещ s нц для i от 1 до N ввод a[i] кц … кон |
Естественный язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. |
|
Python | |
# допускается также # использовать две # целочисленные переменные x, y # и вещественную переменную s a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке
программирования (укажите название и используемую версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом случае Вы должны использовать переменные, аналогичные переменным, используемым в алгоритме, записанном на естественном языке, с учётом синтаксиса и особенностей используемого Вами языка программирования.
Загрузка решений доступна для зарегистрировавшихся пользователей
15
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 1 до 5 и содержат годовые оценки по информатике учащихся выпускного класса. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет подсчитать и вывести средний балл среди «хорошистов» и «отличников» (тех, кто получил итоговую отметку «4» или «5»). Гарантируется, что в классе есть хотя бы один «хорошист» или «отличник». Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бейсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, X, Y AS INTEGER DIM S AS SINGLE FOR I = 1 TO N INPUT A(I) NEXT I … END |
const N=30; var a: array [1..N] of integer; i, x, y: integer; s: real; begin for i:=1 to N do read (a[i]); … end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; #define N 30 int main(void) {int a[N]; int i, x, y; float s; for (i=0; i < N; i++) cin >> a[i]; … } |
алг нач цел N = 30 целтаб a[1:N] цел i, x, y вещ s нц для i от 1 до N ввод a[i] кц … кон |
Естественный язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. |
|
Python | |
# допускается также # использовать две # целочисленные переменные x, y # и вещественную переменную s a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке
программирования (укажите название и используемую версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом случае Вы должны использовать переменные, аналогичные переменным, используемым в алгоритме, записанном на естественном языке, с учётом синтаксиса и особенностей используемого Вами языка программирования.
Загрузка решений доступна для зарегистрировавшихся пользователей
16
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 150 до 200 — рост учащихся выпускного класса. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет подсчитать и вывести средний рост среди учащихся класса, входящих в школьную баскетбольную команду (в команду входят все учащиеся, чей рост больше 180 сантиметров). Гарантируется, что в классе учится хотя бы один член баскетбольной команды. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бейсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, X, Y AS INTEGER DIM S AS SINGLE FOR I = 1 TO N INPUT A(I) NEXT I … END |
const N=30; var a: array [1..N] of integer; i, x, y: integer; s: real; begin for i:=1 to N do read (a[i]); … end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; #define N 30 int main(void) {int a[N]; int i, x, y; float s; for (i=0; i < N; i++) cin >> a[i]; … } |
алг нач цел N = 30 целтаб a[1:N] цел i, x, y вещ s нц для i от 1 до N ввод a[i] кц … кон |
Естественный язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. |
|
Python | |
# допускается также # использовать две # целочисленные переменные x, y # и вещественную переменную s a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке
программирования (укажите название и используемую версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом случае Вы должны использовать переменные, аналогичные переменным, используемым в алгоритме, записанном на естественном языке, с учётом синтаксиса и особенностей используемого Вами языка программирования.
Загрузка решений доступна для зарегистрировавшихся пользователей
17
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 100 и содержат итоговые баллы участников олимпиады по информатике. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет подсчитать и вывести средний балл среди участников, ставших призёрами олимпиады (призёрами олимпиады стали школьники, набравшие более 50 баллов). Гарантируется, что хотя бы один участник олимпиады стал её призёром. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Бейсик | Паскаль |
---|---|
N=30 DIM A(N) AS INTEGER DIM I, X, Y AS INTEGER DIM S AS SINGLE FOR I = 1 TO N INPUT A(I) NEXT I … END |
const N=30; var a: array [1..N] of integer; i, x, y: integer; s: real; begin for i:=1 to N do read (a[i]); … end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; #define N 30 int main(void) {int a[N]; int i, x, y; float s; for (i=0; i < N; i++) cin >> a[i]; … } |
алг нач цел N = 30 целтаб a[1:N] цел i, x, y вещ s нц для i от 1 до N ввод a[i] кц … кон |
Естественный язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. |
|
Python | |
# допускается также # использовать две # целочисленные переменные x, y # и вещественную переменную s a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке
программирования (укажите название и используемую версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом случае Вы должны использовать переменные, аналогичные переменным, используемым в алгоритме, записанном на естественном языке, с учётом синтаксиса и особенностей используемого Вами языка программирования.
Загрузка решений доступна для зарегистрировавшихся пользователей
18
Задания Д25 C2 № 6200
Дан массив, содержащий 2014 неотрицательных целых чисел, не превышающих 10 000. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести сумму всех содержащихся в массиве трёхзначных чисел, десятичная запись которых оканчивается на 9, но не на 99. Если подходящих чисел в массиве нет, программа должна вывести число –1. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Паскаль | Бейсик |
---|---|
const N=2014; var a : array [1..N] of integer; i, j, s: integer; begin for i:=1 to N do readln(a[i]); … end. |
N=2014 DIM A(N) AS INTEGER DIM I, J, S AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
Си++ | Алгоритмический |
#include <iostream> using namespace std; #define N 2014 int main() { int a[N]; int i, j, s; for (i=0; i < N; i++) cin >> a[i]; … } |
алг нач цел N=2014 целтаб a[1:N] цел i, j, s нц для i от 1 до N ввод a[i] кц … кон |
Python | |
# допускается также # использовать две # целочисленные переменные j, s a = [] n = 2014 for i in range(0, n): a.append(int(input())) … |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.4) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Загрузка решений доступна для зарегистрировавшихся пользователей
19
Задания Д25 C2 № 10301
Дан массив, содержащий 2016 неотрицательных целых чисел. Необходимо найти в этом массиве количество таких элементов, которые равны среднему арифметическому двух элементов, расположенных сразу после него. Например, в массиве из 6 элементов, равных соответственно 2, 3, 1, 5, 6, 4, есть три таких элемента, они расположены на первом, втором и четвёртом месте и равны 2, 3 и 5.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.
Бейсик | Python |
---|---|
CONST N=2016 DIM A(N) AS INTEGER DIM I, K AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
# допускается также использо- # вание целочисленной # переменной k a = [] N = 2016 for i in range(0, N): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const N=2016; var a: array [1..N] of integer; i, k: integer; begin for i:=1 to N do readln(a[i]); … end. |
алг нач цел N=2016 целтаб a[1:N] цел i, k нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; #define N 2016 int main(){ int a[N]; int i, k; for (i=0; i < N; i++) cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.4). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Загрузка решений доступна для зарегистрировавшихся пользователей
20
Задания Д25 C2 № 10328
Дан массив, содержащий 2016 неотрицательных целых чисел. Необходимо найти в этом массиве количество таких элементов, которые равны среднему арифметическому двух элементов, расположенных непосредственно перед ним. Например, в массиве из 6 элементов, равных соответственно 4, 6, 5, 1, 3, 2, есть три таких элемента, они расположены на третьем, пятом и шестом месте и равны 5, 3 и 2.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.
Бейсик | Python |
---|---|
CONST N=2016 DIM A(N) AS INTEGER DIM I, K AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
# допускается также использо- # вание целочисленной # переменной k a = [] N = 2016 for i in range(0, N): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const N=2016; var a: array [1..N] of integer; i, k: integer; begin for i:=1 to N do readln(a[i]); … end. |
алг нач цел N=2016 целтаб a[1:N] цел i, k нц для i от 1 до N ввод a[i] кц … кон |
Си | |
#include <iostream> using namespace std; #define N 2016 int main(){ int a[N]; int i, k; for (i=0; i cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.4). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Загрузка решений доступна для зарегистрировавшихся пользователей
21
Задания Д25 C2 № 10399
Дан массив, содержащий 2016 целых чисел. Необходимо найти и вывести сумму тех элементов этого массива, чётность которых совпадает с чётностью максимального элемента.
Например, в массиве из 6 элементов, равных соответственно 2, 3, 1, 5, 6, 4, максимальный элемент чётный (6), значит, ответом будет сумма чётных элементов этого массива 2 + 6 + 4 = 12.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.
Бейсик | Python |
---|---|
CONST N=2016 DIM A(N) AS INTEGER DIM I, M, S, P AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
# допускается также использо- # вание целочисленной # переменной m, s, p a = [] N = 2016 for i in range(0, N): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const N=2016; var a: array [1..N] of integer; i, m, s, p: integer; begin for i:=1 to N do readln(a[i]); … end. |
алг нач цел N=2016 целтаб a[1:N] цел i, m, s, p нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; #define N 2016 int main(){ int a[N]; int i, m, s, p; for (i=0; i < N; i++) cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.4). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Загрузка решений доступна для зарегистрировавшихся пользователей
22
Задания Д25 C2 № 10426
Дан массив, содержащий 2016 целых чисел. Необходимо найти и вывести сумму тех элементов этого массива, чётность которых не совпадает с чётностью минимального элемента.
Например, в массиве из 6 элементов, равных соответственно 2, 3, 1, 5, 6, 4, минимальный элемент нечётный (1), значит, ответом будет сумма чётных элементов этого массива 2 + 6 + 4 = 12.
Если элементов нужной чётности в массиве нет, сумма считается равной нулю. Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.
Бейсик | Python |
---|---|
CONST N=2016 DIM A(N) AS INTEGER DIM I, M, S, P AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
# допускается также использо- # вание целочисленной # переменной m, s, p a = [] N = 2016 for i in range(0, N): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const N=2016; var a: array [1..N] of integer; i, m, s, p: integer; begin for i:=1 to N do readln(a[i]); … end. |
алг нач цел N=2016 целтаб a[1:N] цел i, m, s, p нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; #define N 2016 int main(){ int a[N]; int i, m, s, p; for (i=0; i < N; i++) cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.4). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Загрузка решений доступна для зарегистрировавшихся пользователей
23
Задания Д25 C2 № 13636
Дан массив, содержащий 2017 положительных целых чисел, не превышающих 10000. Необходимо найти и вывести сумму таких элементов этого массива, шестнадцатеричная запись которых содержит ровно три знака, причём последний из них – буква от A до F. Например, для массива из 4 элементов, содержащего числа 522, 4095, 296, 205, ответ будет равен 4617: в шестнадцатеричной системе эти числа записываются как 20A, FFF, 128, CD; первые два подходят, в третьем – последняя цифра не записывается буквой, в четвёртом – меньше трёх знаков. Если таких чисел в массиве нет, сумма считается равной 0. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Бейсик | Python |
---|---|
CONST N=2017 DIM A(N) AS INTEGER DIM I, M, K AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
# допускается также использо- # вание целочисленных # переменных m, k a = [] N = 2017 for i in range(0, N): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const N=2017; var a: array [1..N] of integer; i, m, k: integer; begin for i:=1 to N do readln(a[i]); … end. |
алг нач цел N=2017 целтаб a[1:N] цел i, m, k нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; #define N 2017 int main(){ int a[N]; int i, m, k; for (i=0; i<N; i++) cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и версию языка программирования). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Загрузка решений доступна для зарегистрировавшихся пользователей
24
Дан массив, содержащий 2018 положительных целых чисел, не превышающих 30 000. Необходимо определить, сколько в этом массиве элементов, десятичная и восьмеричная запись которых содержит одинаковое количество цифр.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Бейсик | Python |
---|---|
CONST N=2018 DIM A(N) AS INTEGER DIM B, I, K, L, M AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
# кроме уже указанных # допускается использование # целочисленных переменных # k, b, l, m a = [] N = 2018 for i in range(0, N): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const N=2018; var a: array [1..N] of integer; b, i, k, l, m: integer; begin for i:=1 to N do readln(a[i]); … end. |
алг нач цел N=2018 целтаб a[1:N] цел b, i, k, l, m нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; const int N=2018; int main(){ int a[N]; int b, i, k, l, m; for (i=0; i cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Загрузка решений доступна для зарегистрировавшихся пользователей
25
Задания Д25 C2 № 14786
Дан массив, содержащий 2018 положительных целых чисел, не превышающих 30 000. Необходимо определить, сколько в этом массиве элементов, десятичная и шестнадцатеричная запись которых содержит одинаковое количество цифр.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже.
Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Бейсик | Python |
---|---|
CONST N=2018 DIM A(N) AS INTEGER DIM B, I, K, L, M AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
# кроме уже указанных # допускается использование # целочисленных переменных # k, b, l, m a = [] N = 2018 for i in range(0, N): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const N=2018; var a: array [1..N] of integer; b, i, k, l, m: integer; begin for i:=1 to N do readln(a[i]); … end. |
алг нач цел N=2018 целтаб a[1:N] цел b, i, k, l, m нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; const int N=2018; int main(){ int a[N]; int b, i, k, l, m; for (i=0; i < N; ++i) cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Загрузка решений доступна для зарегистрировавшихся пользователей
26
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит сумму элементов массива, меньших 200 и при этом кратных 5, а затем заменяет каждый такой элемент на число, равное найденной сумме. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки. Например, для исходного массива из шести элементов:
204
115
27
20
305
4
программа должна вывести следующий массив:
204
135
27
135
305
4
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Бейсик | Python |
---|---|
CONST N AS INTEGER = 30 DIM A (1 TO N) AS LONG DIM I, J, K AS LONG FOR I = 1 TO N INPUT A(I) NEXT I … END |
# допускается также # использовать две # целочисленные # переменные j, k a = [] n = 30 for i in range(0, n): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const n = 30; var a: array [1..n] of longint; i, j, k: longint; begin for i := 1 to n do readln(a[i]); … end. |
алг нач цел N = 30 целтаб а[1:N] цел i, j, k нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; const int n = 30; int main() { int a[n]; int i, j, k; for (i = 0; i < n; i++) std::cin >> a[i]; … return 0; } |
качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на Алгоритмическом языке).
Загрузка решений доступна для зарегистрировавшихся пользователей
Завершить тестирование, свериться с ответами, увидеть решения.
На уроке рассмотрено решение 25 задания ЕГЭ по информатике: дается подробное объяснение и разбор заданий демонстрационных вариантов и досрочных экзаменов
Содержание:
- Объяснение задания 25 ЕГЭ по информатике
- Алгоритмизация и программирование
- Решение 25 заданий ЕГЭ по информатике
- Делители числа
- Простые числа
- Задания прошлых лет для тренировки (до 2021)
- Задачи с поэлементной обработкой массива
- Задачи на обработку элементов массива с последующей заменой
- Задачи на обработку пар элементов массива (два подряд идущих)
- Задачи на обработку трёх подряд идущих элементов массива (тройки элементов массива)
- Задачи на поиск максимума, минимума элементов массива и другие
- Решение 25 заданий ЕГЭ по информатике: более сложные задания
25-е задание: «Программная обработка целочисленной информации»
Уровень сложности
— высокий,
Требуется использование специализированного программного обеспечения
— да,
Максимальный балл
— 2,
Примерное время выполнения
— 20 минут.
Проверяемые элементы содержания: Умение создавать собственные программы (10–20 строк) для обработки целочисленной информации
Рекомендации по выполнению:
«В этом задании требуется написать фрагмент программы, реализующий простую обработку целочисленного массива. У экзаменуемых, хорошо освоивших технику программирования, это задание обычно не вызывает серьёзных затруднений, поскольку алгоритм обработки массива не относится к сложным»
Типичные ошибки и рекомендации по их предотвращению:
«Часто бывает, что увлекшись написанием решения, экзаменуемый совершает ошибки в простых ситуациях: организация ввода-вывода, описание и инициализация переменных, обработка массива (выход за границу) и т.д. Эти ошибки могут стоить Вам нескольких баллов, старайтесь их не допускать»
ФГБНУ «Федеральный институт педагогических измерений»
Алгоритмизация и программирование
Для решения задания требуется вспомнить темы:
- Одномерные массивы.
- Двумерные массивы.
Решение 25 заданий ЕГЭ по информатике
Плейлист видеоразборов задания на YouTube:
Задание демонстрационного варианта 2022 года ФИПИ
Делители числа
25_7:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [126849; 126871], числа, имеющие ровно 4 различных делителя.
Выведите эти четыре делителя для каждого найденного числа в порядке возрастания.
✍ Решение:
-
✎ Решение (неоптимизированный вариант, метод полного перебора):
- Будем использовать оптимизированный вариант программы, подходящий для «медленных» компьютеров. Для этого перебор делителей для числа
n
будем выполнять от2
до√n
, округлив его до ближайшего целого числа (не включая точный квадратный корень, если он существует):
PascalABC.net:
|
||
Python:
|
||
С++: |
✎ Решение (оптимизированный вариант):
вместо диапазона делителей [1; число] использовать диапазон [1; округл(√n)]
n
), то в список делителей добавлять будем только сам делитель, если нет – то добавляем пару делителей (делитель
и n // делитель
):Пример: число 8 = 2 * 4 Достаточно рассмотреть цикл от 2 до округл(√8) (=2) если 8 делится на 2 и 8/2 не равно 2, то делители: 2 и 4 (8/2)
PascalABC.net:
|
||
Python:
|
||
С++: |
✎ Решение: Генерация списка делителей.
Общая идея:
PascalABC.net: |
Python:
for n in range(126849, 126871+1): divs = [d for d in range(1, n+1) if n % d == 0] if len(divs) == 4: print( *divs ) |
С++: |
Ответ:
1 3 42283 126849 1 47 2699 126853 1 5 25373 126865 1 293 433 126869
25_8:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [164700; 164752], числа, имеющие ровно 6 различных делителей.
Выведите эти делители для каждого найденного числа в порядке возрастания.
✍ Решение:
-
✎ Решение (оптимизированный вариант):
- Для каждого числа указанного диапазона генерируем список делителей.
- Если длина списка равна четырем, выводим его.
PascalABC.net:
|
||
Python:
|
||
С++: |
✎ Решение: Генерация списка делителей.
Общая идея:
PascalABC.net: |
Python:
for n in range(164700, 164752+1): divs = [d for d in range(1, n+1) if n % d == 0] if len(divs) == 6: print( *divs ) |
С++: |
Ответ:
1 2 4 41177 82354 164708 1 3 9 18301 54903 164709 1 2 4 41179 82358 164716 1 2 4 41183 82366 164732
25_9:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [190201; 190230], числа, имеющие ровно 4 различных делителя.
Выведите эти четыре делителя для каждого найденного числа в порядке убывания.
✍ Решение:
-
✎ Решение (неоптимизированный вариант, метод полного перебора):
- Для каждого числа указанного диапазона генерируем список делителей.
- Если длина списка равна четырем, выводим его.
PascalABC.net:
|
||
Python:
|
||
С++: |
✎ Решение (оптимизированный вариант):
PascalABC.net:
|
||
Python:
|
||
С++: |
✎ Решение: Генерация списка делителей.
Общая идея:
PascalABC.net: |
Python:
for n in range(190201, 190230+1): divs = [d for d in range(1, n+1) if n % d == 0] if len(divs) == 4: divs.reverse() # реверсируем (по убыванию) print( *divs ) |
С++: |
Ответ:
190201 17291 11 1 190202 95101 2 1 190214 95107 2 1 190219 853 223 1 190222 95111 2 1 190223 17293 11 1 190227 63409 3 1 190229 14633 13 1
Видеоразбор задания:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь
25_10:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [190201; 190280], числа, имеющие ровно 4 различных ЧЁТНЫХ делителя.
Выведите эти четыре делителя для каждого найденного числа в порядке убывания.
✍ Решение:
-
✎ Решение (неоптимизированный вариант, метод полного перебора):
- Для каждого числа указанного диапазона генерируем список делителей.
- Если длина списка равна четырем, выводим его.
PascalABC.net:
|
||
Python:
|
||
С++: |
✎ Решение: Генерация списка делителей.
Общая идея:
PascalABC.net: |
Python:
for n in range(190201, 190280+1): divs = [d for d in range(1, n+1) if n % d == 0 and d % 2 == 0] if len(divs) == 4: divs.reverse() print( *divs ) |
С++: |
Ответ:
190226 838 454 2 190234 17294 22 2 190238 2606 146 2 190252 95126 4 2 190258 758 502 2 190274 27182 14 2 190276 95138 4 2
25_11:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [394441; 394505], числа, имеющие максимальное количество различных делителей. Если таких чисел несколько, то найдите минимальное из них.
Выведите количество делителей найденного числа и два наибольших делителя в порядке убывания.
✍ Решение:
-
✎ Решение (неоптимизированный вариант, метод полного перебора):
PascalABC.net:
|
||
Python:
|
||
С++: |
✎ Решение (Генерация списка делителей):
PascalABC.net: | ||
Python:
|
||
С++: |
Ответ: 48 394450 197225
Видео
Простые числа
25_12:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [3532000; 3532160], простые числа.
Выведите все найденные простые числа в порядке убывания, слева от каждого числа выведите его номер по порядку.
✍ Решение:
-
✎ Решение (неоптимизированный вариант, метод полного перебора):
PascalABC.net:
|
||
Python:
|
||
С++: |
✎ Решение (оптимизированный вариант):
PascalABC.net:
|
||
Python:
|
||
С++: |
Ответ:
1 3532147 2 3532121 3 3532103 4 3532091 5 3532049 6 3532033 7 3532021 8 3532019 9 3532007
Задания прошлых лет для тренировки (до 2021)
Задачи с поэлементной обработкой массива
25_1: ЕГЭ по информатике 2017 года (один из вариантов со слов выпускника):
Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество элементов массива НЕ кратных 3.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но использовать все описанные переменные не обязательно.
1 2 3 4 5 6 7 8 |
const N = 20; var i,j,k:integer; a:array [1..N] of integer; begin for i:=1 to N do readln(a[i]); … end. |
✍ Решение:
Рассмотрим заданный фрагмент решения:
- в цикле со счетчиком i запрашиваются значения элементов массива, т.е. формируется массив;
- из постановки задания видим, что необходимо найти количество чего-то, это значит, что нужно использовать переменную счетчик;
- объявлены три целочисленных переменных: i, j, k; переменная i использована в первом цикле, значит для счетчика можно взять переменную k;
- счетчик всегда нужно обнулять, поэтому следующим оператором будет:
- определим, количество чего нам необходимо считать: количество элементов массива не кратных 3. Кратность можно определить через остаток от деления: если значение элемента массива при делении на 3 в остатке не возвращает 0, значит элемент не кратен трем;
- остаток при делении в паскале — оператор mod. Поскольку необходимо просмотреть каждый элемент массива, то это нужно делать в цикле for;
- переменная i уже использована в первом цикле for, значит, для очередного цикла возьмем неиспользованную переменную j:
- если условие истинно (т.е. нашелся элемент массива, не кратный трем), то увеличиваем счетчик:
- после цикла остается вывести значение счетчика, т.е. вывести количество элементов массива не кратных 3:
for j:=1 to N do if a[j] mod 3 <> 0 then
Результат:
k:=0; for j:=1 to N do if a[j] mod 3 <> 0 then inc(k); writeln(k);
Смотрите видео с подробным объяснением и разбором данного 25 задания:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь
Задачи на обработку элементов массива с последующей заменой
25_3: Решение 25 задания ЕГЭ по информатике Демоверсия 2018:
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на одном из языков программирования алгоритм, который находит количество элементов массива, больших 100 и при этом кратных 5, а затем заменяет каждый такой элемент на число, равное найденному количеству. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести измененный массив, каждый элемент массива выводится с новой строчки.
Например, для массива из шести элементов: 4 115 7 195 25 106
программа должна вывести числа 4 2 7 2 25 106
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Паскаль:
1 2 3 4 5 6 7 8 9 10 |
const N = 30; var a: array [1..N] of longint; i, j, k: longint; begin for i := 1 to N do readln(a[i]); ... end. |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Похожие задания для тренировки
✍ Решение:
-
Решение на языке Паскаль:
1 2 3 4 5 6 7 8 9 |
k := 0; for i := 1 to N do if (a[i] > 100) and (a[i] mod 5 = 0) then k:=k+1; for i := 1 to N do begin if (a[i] > 100) and (a[i] mod 5 = 0) then a[i] := k; writeln(a[i]) end |
25_6:
Дан массив, содержащий неотрицательные целые числа. Необходимо вывести:
Например, для массива из шести элементов: 4 6 12 17 3 8
ответом будет 12 — наибольшее чётное число, поскольку чётных чисел в этом массиве больше
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Python:
1 2 3 4 5 6 |
# допускается также использовать # целочисленные переменные j, k, m a = [] n = 2000 // менять значение n нельзя for i in range(0, n): a.append(int(input())) |
✍ Решение:
-
Решение на языке Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
a = [] n = 2000 // менять значение n нельзя for i in range(0, n): a.append(int(input())) j = 0 k = 0 m = 0 for i in range(0, n): if a[i]%2 == 0: j+=1 else: k+=1 if k>j: j = 0 for i in range(0, n): if a[i]>j and a[i] % 2 != 0: j = a[i] print(j) else: for i in range(0, n): if a[i]>m and a[i] % 2 == 0: m = a[i] print(m) |
Задачи на обработку пар элементов массива (два подряд идущих)
25_4:
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых одно из чисел двузначное. В данной задаче под парой подразумевается два подряд идущих элемента массива.
Например, для массива из семи элементов: 13; 323; 12; 33; 117 — ответ: 4.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
1 2 3 4 5 6 7 8 9 10 |
const N = 40; var a: array [1..N] of integer; i, j, k: integer; begin for i := 1 to N do readln(a[i]); ... end. |
✍ Решение:
1 2 3 4 5 |
k := 0; for i := 1 to N - 1 do if ((a[i] < 100) and (a[i] > 9)) or ((a[i + l] < 100) and (a[i + 1] > 9)) then inc(k); writeln(k); |
25_5:
Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от -10 000 до 10 000 включительно. Опишите алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых сумма элементов делится на 2, но не делится на 4. В данной задаче под парой подразумевается два подряд идущих элемента массива.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Python:
1 2 3 4 5 6 7 |
# допускается также использовать # две целочисленные переменные # j и k a = [] n = 20 for i in range(0, n): a.append(int(input())) |
✍ Решение:
-
Проанализируем данный фрагмент кода на языке Python:
- В первой строчке кода объявляется список а. Дальше, идет объявление переменной n = 20, она отвечает за размер массива.
- Ниже мы видим инициализацию списка а. Мы должны дописать код дальнейшей программы, который последует после заполнения списка пользователем.
- Итак, по условию мы должны находить пары элементов, сумма которых делится на 2, но не делится на 4, причем парами считаются соседние элементы, например:
a[0]
иa[1]
,a[1]
иa[2]
. - Мы можем узнать, делится ли данный элемент на число, если остаток от деления на него равен 0, и не делится — в противном случае. Тогда сумма соседних элементов при делении на 2 должна давать остаток 0, а при делении на 4 наоборот — отличный от 0.
- Введем цикл, который будет перебирать все элементы массива, считать сумму соседей и проверять истинность условия.
- Когда мы определились с условием, за счетчик возьмем переменную
k
, которую допустимо брать исходя из комментариев к программе. - Мы добавили допустимую переменную
j
, чтобы условный оператор выглядел компактнее. - Однако задача еще не решена. Во-первых, мы должны до цикла инициализировать счетчик
k = 0
. Так как иначе Python выдаст ошибку. - Кроме того, добавим вывод результата после цикла.
- Таким образом, правильный вариант с учетом доработок:
При решении такого рода задач, необходимо помнить, что массив в Python — это список и это динамический тип данных. Кроме того, нумерация элементов массива начинается с 0.
for i in range(0, n-1): j = a[i] + a[i+1] if j%2 == 0 and j%4 != 0:
Так как мы рассматриваем элемент a[i + 1]
, значит, цикл должен работать до n — 1, чтобы не выйти за границы диапазона массива.
... if j%2 == 0 and j%4 != 0: k+=1
Дело в том, что мы пытаемся присвоить переменной k
его же значение, но на 1 больше, но интерпретатор «не встречал» раньше переменной k
, из-за чего возникает ошибка.
a = [] n = 20 for i in range(0, n): a.append(int(input())) k = 0 for i in range(0, n - 1): j = a[i] + a[i + 1] if j%2 == 0 and j%4 != 0: k += 1 print(k)
Задачи на обработку трёх подряд идущих элементов массива (тройки элементов массива)
25_2:
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество троек элементов массива, состоящих из равных между собой чисел. В данной задаче под тройкой подразумевается три подряд идущих элемента массива.
Например, для массива из семи элементов: 2; 2; 2; 4; 4; 4; 4 — ответ: 3.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
1 2 3 4 5 6 7 8 9 10 |
const N=40; var a: array[1..N] of integer; i, j, k:integer; begin for i:=1 to N do readln(a[i]); ... end. |
✍ Решение:
- из постановки задания видим, что необходимо искать количество чего-то, это значит, что нужно использовать переменную счетчик; возьмем для нее объявленную переменную k;
- счетчик всегда нужно сначала обнулять, поэтому следующим оператором будет:
- определим, количество чего нам необходимо считать: количество троек элементов массива, состоящих из равных между собой чисел. Т.е. необходимо сравнивать между собой каждые три подряд идущих элемента массива, например так:
- inc(k) — оператор, увеличивающий счетчик k на единицу;
- условие необходимо выполнять в цикле, так как нужно проверить все элементы массива; цикл со счетчиком необходимо организовать от 1 до N-2, в противном случае индексы элементов a[i+2] выйдут за границы диапазона массива (например, при i = 40, получим … a[40+2], а 42-го элемента массива не существует, поэтому цикл надо делать до i = 38, т.е. N-2).
if (a[i]=a[i+1]) and (a[i]=a[i+2]) then inc(k);
Результат:
for i:=1 to N-2 do if (a[i]=a[i+1]) and (a[i]=a[i+2]) then inc(k); writeln(k);
Более подробное объяснение предлагаем посмотреть на видео:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь
Задачи на поиск максимума, минимума элементов массива и другие
В решение заданий демо-версии используется язык программирования Python.
Задание 1. Анализ информационных моделей На рисунке схема дорог Н-ского района изображена в виде графа, в таблице содержатся сведения о протяжённости каждой из этих дорог (в километрах). Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова сумма протяжённостей дорог из пункта D в пункт В и из пункта F в пункт A. В ответе запишите целое число. |
На графе расставим веса вершин. Далее 2 и 7 вершины ведут нас к 5, значит А это 5, оставшаяся «тройка» это вершина Е под номером 6. Сумма дорог BD + AF = 53 + 5 = 58
Ответ: 58 |
||||||||||||||||||
Задание 2. Построение таблиц истинности логических выражений Миша заполнял таблицу истинности логической функции F F= ¬(y → x) v (z→ w) v ¬z , но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z. Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z. В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно. Пример. Функция задана выражением ¬x v y, зависящим от двух переменных, а фрагмент таблицы имеет следующий вид. В этом случае первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе следует написать yx. |
¬(y → x) v (z→ w) v ¬z=0. Следовательно y → x =1, z→ w=0, z=1. Значит третий столбец z. z→ w=0, значит w=0, и это может быть только 4 столбец. y → x =1, следовательно из второй строки мы видим, что первый столбец может быть только у, а второй х.
Решение на Python
Ответ: YXZW |
||||||||||||||||||
Задание 3. Базы данных. Файловая система В прикрепленном файле приведён фрагмент базы данных «Продукты» о поставках товаров в магазины районов города. База данных состоит из трёх таблиц. Таблица «Движение товаров» содержит записи о поставках товаров в На рисунке приведена схема указанной базы данных. Используя информацию из приведённой базы данных, определите общий вес |
На третьем листе книги применим фильтр по району и получим ID четырех магазинов. На втором листе применим фильтр по товару и получим ID товара. На первом листе применим фильтры по ID товара и ID магазинов и типу операции. Все даты попадают в интервал от 1 до 8 июня. Получим: Поступило в продажу 710 упаковок. В упаковке 0,5 кг. Получим 355 кг. Ответ: 355 |
||||||||||||||||||
Задание 4. Кодирование и декодирование информации По каналу связи передаются сообщения, содержащие только буквы из набора: А, З, К, Н, Ч. Для передачи используется двоичный код,удовлетворяющий прямому условию Фано, согласно которому никакое кодовое слово не является началом другого кодового слова. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Кодовые слова для некоторых букв известны: Н – 1111, З – 110. Для трёх оставшихся букв А, К и Ч кодовые слова неизвестны. Какое количество двоичных знаков потребуется для кодирования слова КАЗАЧКА, если известно, что оно закодировано минимально возможным количеством двоичных знаков? |
Ответ: 14 |
||||||||||||||||||
Задание 5. Анализ и построение алгоритмов для исполнителей На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему 1. Строится двоичная запись числа N. Полученная таким образом запись является двоичной записью искомого числа R.Например, для исходного числа 610 = 1102 результатом является число |
Минимальное R, большее 40, это 41.
ИЛИ программное решение
Ответ: 16
|
||||||||||||||||||
Задание 6. Определение результатов работы простейших алгоритмов Исполнитель Черепаха действует на плоскости с декартовой системой координат. Черепахе был дан для исполнения следующий алгоритм: Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 5 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперёд n (где n– целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова; Назад n (где n– целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, Налево m (где m– целое число), вызывающая изменение направления движения на m градусов против часовой стрелки. Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм: Определите, сколько точек с целочисленными координатами будут находиться внутри пересечения фигур, ограниченных заданными алгоритмом линиями, включая точки на границах этого пересечения. |
Сначала нужно построить фигуру.
Далее мы находим уравнения прямых, которыми ограничена фигура и решаем ИЛИ Ответ: 1 задание — 38, 2 задание — 128 |
||||||||||||||||||
Задание 7. Кодирование и декодирование информации. Передача информации Музыкальный фрагмент был записан в формате моно, оцифрован и сохранён в виде файла без использования сжатия данных. Размер полученного файла – 28 Мбайт. Затем тот же музыкальный фрагмент был записан повторно в формате стерео (двухканальная запись) и оцифрован с разрешением в 3,5 раза выше и частотой дискретизации в 2 раза меньше, чем в первый раз. Сжатие данных не производилось. Укажите размер полученного при повторной записи файла в Мбайт. В ответе запишите только целое число, единицу измерения писать не нужно. |
I = ν ⋅ i ⋅ t ⋅ k, где ν — частота дискретизации (Гц), i — разрешение (бит), t — время (с), k — количество дорожек (1 -моно, 2- стерео, 4 — квадро) I1 = ν ⋅ i ⋅ t I2 = 3,5 · 28 = 98 Ответ: 98 |
||||||||||||||||||
Задание 8. Перебор слов и системы счисления Определите количество пятизначных чисел, записанных в восьмеричной системе счисления, в записи которых только одна цифра 6, при этом никакая нечётная цифра не стоит рядом с цифрой 6. |
* * * * * — пятизначное число. 6 * * * * — вариантов 3 ⋅ 7 ⋅ 7 ⋅ 7 = 1029 Ответ: 2961 |
||||||||||||||||||
Задание 9. Работа с таблицами Файл с данными Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел. Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия: |
Для решения этой задачи понадобится 10 вспомогательных столбцов. Сначала мы посчитаем количество повторяющихся чисел в каждой строке. Затем сумму каждой строки диапазона H:M. Если повторений нет, то эта сумма равна 6. Далее мы найдем среднее арифметическое неповторяющихся значений. Затем найдем сумму повторяющихся значений. Затем проверим соблюдение двух условий. И подсчитаем количество строк, в которых соблюдаются оба условия. Ответ: 2241 |
||||||||||||||||||
Задание 10. Поиск символов в текстовом редакторе Файл с данными Текст произведения Льва Николаевича Толстого «Севастопольские рассказы» представлен в виде файлов различных форматов. Откройте один из файлов и определите, сколько раз встречается в тексте отдельное слово «теперь» со строчной буквы. Другие формы этого слова учитывать не следует. |
В текстовом редакторе используем инструмент найти (по умолчанию он не учитывает регистр, в расширенном поиске есть кнопка больше, где можно проверить настройки). Ищем слово целиком. Ставим галочку учитывать регистр. Слово теперь со строчной буквы встречается 45 раз. Ответ: 45 |
||||||||||||||||||
Задание 11. Вычисление количества информации При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 250 символов и содержащий только десятичные цифры и символы из 1650-символьного специального алфавита. В базе данных для хранения каждого идентификатора отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковым и минимально возможным количеством бит. Определите объём памяти (в Кбайт), необходимый для хранения 65 536 идентификаторов. В ответе запишите только целое число – количество Кбайт. |
I = K · i, N = 2 i ID : ****….**** – всего 250 различных символов в наборе N = 10 + 1650 = 1660, 1024<1660<2048, 2048 = 211, значит для кодирования одного символа нужно 11 бит. IID = 250 · 11 = 2750 бит = 343,75 байт ≈ 344 байт – отводится на идентификатор целое число байт I65536 = 65536 ⋅ 344 = 22544384 байта = 22016 Кбайт– всего Ответ: 22016 |
||||||||||||||||||
Задание 12. Выполнение алгоритмов для исполнителей Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр. А) заменить (v, w). Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Б) нашлось (v). Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется. Цикл выполняется, пока условие истинно. В конструкции ЕСЛИ условие выполняется команда 1 (если условие истинно). В конструкции ЕСЛИ условие выполняется команда 1 (если условие истинно) или команда 2 (если условие ложно). Дана программа для Редактора: |
def pr(n): #функция определяет простое ли число for n in range(100): #перебираем n if ‘>2’ in s: if ‘>0’ in s: sum_s = 0 Ответ: 5 |
||||||||||||||||||
Задание 13. Поиск путей в графе На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К, Л. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. |
Начнем подсчет из вершины Е налево через В и возвращаемся в Е через Л.
Ответ: 21 |
||||||||||||||||||
Задание 14. Кодирование чисел. Системы счисления Операнды арифметического выражения записаны в системе счисления с основанием 15. |
for x in range(15): if n%14 == 0: Ответ: 8767 |
||||||||||||||||||
Задание 15. Преобразование логических выражений На числовой прямой даны два отрезка: D = [17; 58] и C = [29; 80]. Укажите наименьшую возможную длину такого отрезка A, для которого логическое выражение |
def deli(n,m): for A in range(1,1000): if Ok: Ответ: 94 |
||||||||||||||||||
Задание 16. Рекурсивные алгоритмы Алгоритм вычисления значения функции F(n), где n – натуральное число, |
F(2023) = 2023! = 2023 ⋅ 2022! F(2023)/F(2020) = (2023 ⋅ 2022 ⋅ 2021 ⋅ 2020!)/2020! = 2023 ⋅ 2022 ⋅ 2021 = = 8266912626 Ответ: 8266912626 |
||||||||||||||||||
Задание 17. Проверка на делимость Файл с данными В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите количество пар последовательности, в которых |
f= open(’17.txt’) k = 0 for i in p: for i in range(1,len(p)): #Осторожно, скобки! print(k,PP) Ответ: 180 190360573 |
||||||||||||||||||
Задание 18. Робот-сборщик монет Файл с данными Квадрат разлинован на N×N клеток (1 < N < 17). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вниз — в соседнюю нижнюю. При попытке выхода за границу квадрата Робот разрушается. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клетке маршрута Робота. Откройте файл. Определите максимальную и минимальную денежную сумму, которую может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. В ответ запишите два числа друг за другом без разделительных знаков — сначала максимальную сумму, затем минимальную. Исходные данные представляют собой электронную таблицу размером N×N, каждая ячейка которой соответствует клетке квадрата.Пример входных данных:
Для указанных входных данных ответом должна быть пара чисел 41 и 22. |
Сначала скопируем таблицу рядом, начиная со столбца АА, можно уменьшить ширину столбца до 4-5. Ячейка АА1=А1. Ячейка АВ1 = АА1+В1, протягиваем ее до АТ1. Ячейка АА2 = АА1 + А2, протягиваем ее до АА20. Далее ячейка АВ2 = В2+МАКС(АА2;АВ1), протягиваем ее на весь оставшийся диапазон, копируем только значения, не трогая стен.
Справа от стен формулы повторяют крайний левый рял, столбец АА, снизу от стен формулы копируют верхнюю строку 1. Далее делаем замену всех формул МАКС на МИН. Ответ: 1099 1026 |
||||||||||||||||||
Задание 19. Выигрышная стратегия. Задание 1 Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 129. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 129 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 128. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом. |
При значениях S < 64 у Пети есть возможность сделать такой ход, что Ваня не сможет выиграть своим первым ходом. При значении S = 64 Петя своим первым ходом может получить 65 или 128 камней в куче. Во всех случаях Ваня увеличивает количество камней в куче в два раза и выигрывает своим первым ходом. Ответ: 64 |
||||||||||||||||||
Задание 20. Выигрышная стратегия. Задание 2 Для игры, описанной в задании 19, найдите два таких значения S, при которых у Пети есть выигрышная стратегия, причем одновременно выполняются два условия:
Найденные значения запишите в порядке возрастания. |
Значение S должно быть меньше 64, поскольку иначе Ваня сможет выиграть своим первым ходом.
Ответ: 32 63 |
||||||||||||||||||
Задание 21. Выигрышная стратегия. Задание 3 Для игры, описанной в задании 19, найдите значение S, при котором одновременно выполняются два условия:
Если найдено несколько значений S, в ответе запишите минимальное из них. |
Ответ: 62 |
||||||||||||||||||
Задание 22. Многопроцессорные системы В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Определите минимальное время, через которое завершится выполнение всей совокупности процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно. |
В независимых процессах время считается от 0,
Ответ: 17 |
||||||||||||||||||
Задание 23. Анализ программы с циклами и условными операторами Исполнитель преобразует число на экране. |
def f(x, y): print (f(1,10) * f(10, 35)) Ответ: 98 |
||||||||||||||||||
Задание 24. Анализ программы с циклами и условными операторами Файл с данными Текстовый файл состоит из символов A, C, D, F и O. Определите максимальное количество идущих подряд пар символов вида согласная + гласная |
f=open(’24.txt’) PP = [‘CA’, ‘CO’, ‘DA’, ‘DO’, ‘FA’, ‘FO’] for i in range(1, len(p), 2): Ответ: 95 |
||||||||||||||||||
Задание 25. Анализ программы с циклами и условными операторами Назовём маской числа последовательность цифр, в которой также могут Например, маске 123*4?5 соответствуют числа 123405 и 12300405. Среди натуральных чисел, не превышающих 1010, найдите все числа, соответствующие маске 1?2139*4, делящиеся на 2023 без остатка. |
Самый простой способ использовать библиотеку fnmatch. или так полным перебором: y = {»,’0′,’00’,’000′} for x in range (1000): Ответ: 162139404 80148 |
||||||||||||||||||
Задание 26. Анализ программы с циклами и условными операторами В магазине для упаковки подарков есть N кубических коробок. Самой интересной считается упаковка подарка по принципу матрёшки – подарок упаковывается в одну из коробок, та в свою очередь в другую коробку и т.д. |
|||||||||||||||||||
Задание 27. Анализ программы с циклами и условными операторами У медицинской компании есть N пунктов приёма биоматериалов на анализ. Все пункты расположены вдоль автомагистрали и имеют номера, соответствующие расстоянию от нулевой отметки до конкретного пункта. Известно количество пробирок, которое ежедневно принимают в каждом из пунктов. Пробирки перевозят в специальных транспортировочных контейнерах вместимостью не более 36 штук. Каждый транспортировочный контейнер упаковывается в пункте приёма и вскрывается только в лаборатории. Файл А Дано два входных файла (файл A и файл B), каждый из которых в первой строке содержит число N (1 ≤ N ≤ 10 000 000) – количество пунктов приёма биоматериалов. В каждой из следующих N строк находится два числа: номер пункта и количество пробирок в этом пункте (все числа натуральные, количество пробирок в каждом пункте не превышает 1000). Пункты перечислены в порядке их расположения вдоль дороги, начиная от нулевой отметки. Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов. |
Ответ: 51063 5634689219329 |
Сегодня посмотрим одно из самых интересных заданий из ЕГЭ по информатике 2023. Будем решать 24 задание. В этом задании нужно работать с файлами.
Все решения задач из задания 24 ЕГЭ по информатике 2023 будут приведены на языке программирования Python (Питон).
Поехали!
Задача (Самая простая)
Текстовый файл состоит не более чем из 106 символов A, B и C. Определите максимальное количество идущих подряд символов B. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Решение:
Решим данную задачу на языке Python.
f=open('24_1.txt') s=f.read() k=0 kmax=0 for i in range(0, len(s)): if s[i]=='B': k=k+1 kmax=max(k, kmax) else: k=0 print(kmax)
С помощью команды open() подвязываемся к файлу. Чтобы не прописывать полный путь, файл должен лежать в той же папке, что и программа.
С помощью команды .read() зачитываем в переменную s всё содержимое файла.
Переменная k — это текущий счётчик символов «B». Задача переменной kmax сохранить максимальное значение k.
С помощью цикла for перебираем все символы из строки s. Переменная i пробегается по номерам всех симолов. Счёт символов начинается в строке с нуля. В начале берём нулевой символ, потом первый и т.д. Конструкция for i in range(0, len(s)) позволяет пройтись по всем символам строки до конца.
Если нам встретился нужный символ «B», то мы счётчик прибавляем на 1. Это значит, что мы подсчитываем текущую цепочку. Если будет стоять 3 символа «B» подряд, значит, счёт k покажет значение 3. Как только встретится дургой символ, то это означает, что цепочка прервалась и счётчик переводится в первоначальное положение 0.
При любом увеличении счётчика происходит анализ этого счётчика на максимальность. Функция max выбирает максимальное значение из старого значения kmax и нового показания счётчика k. Если счётчику k удалось победить kmax, то его значение будет считаться максимальным на данный момент времени.
В ответ идёт значение kmax. Это и есть длина максимальной цепочки. В этой задачке ответ получается 11.
Ответ: 11
Закрепим это простое задание из ЕГЭ по информатике 2023.
Задача (Простая, закрепление)
Текстовый файл состоит не более чем из 106 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых нет символа Z. Для выполнения этого задания следует написать программу.
Решение:
Решение похоже на предыдущее.
f=open('24_2.txt') s=f.read() k=0 kmax=0 for i in range(0, len(s)): if s[i]!='Z': k=k+1 kmax=max(k, kmax) else: k=0 print(kmax)
Если нет символов «Z», то подсчитываем, иначе сбрасываем.
Задача (Обращаемся к соседу)
Текстовый файл состоит не более чем из 106 символов X, Y и Z. Определите максимальное количество идущих подряд символов, расположенных в алфавитном порядке (возможно с повторением симолов). Для выполнения этого задания следует написать программу.
Решение:
f=open('24_2.txt') s=f.read() k=1 kmax=0 for i in range(0, len(s)-1): if s[i]<=s[i+1]: k=k+1 kmax=max(k, kmax) else: k=1 print(kmax)
В ответе получается 15. Символы можно сравнивать между собой с помощью знаков «>» или меньше «<» ( а так же «>=» или «<=»), причём это сравнение происходит в алфавитном порядке. Например, символ «B» будет больше, чем «A» и т.п. Теперь нам нужно уже обратится к соседу, уже важна связь между соседними символами. Раз мы обращаемся к следующему символу, то должны пробегать до len(s)-1, иначе куда мы будем обращаться, когда дойдём до последнего символа?
В самом начале цепочки мы анализируем два символа, а к счётчику прибавляем всего лишь 1. Чтобы это учесть, в начале счётчику (переменной k) присваиваем 1. Затем, по мере продвижения по цепочке, мы добавляем в наш анализ 1 новый символ, и к счётчику добавляется одна 1. Дальше уже таких проблем нет.
Раз мы присвоили в переменную k единицу, то и сбрасывать в ветке else мы тоже должны на 1. Эти значения обычно взаимосвязаны.
Если мы обращаемся к соседнему символу, как правило, счётчик и сброс устанавливаются в 1. Это не стопроцентная истина, но иметь ввиду это нужно.
Ответ: 15
Задача (Обращаемся к соседу, закрепление)
Текстовый файл состоит не более чем из 106 символов арабских цифр (0, 1, …,9). Определите максимальное количество идущих подряд цифр, среди которых каждые две соседние различны. Для выполнения этого задания следует написать программу.
Решение:
f=open('24_3.txt') s=f.read() k=1 kmax=0 for i in range(0, len(s)-1): if s[i]!=s[i+1]: k=k+1 kmax=max(k, kmax) else: k=1 print(kmax)
Если соседи различны, мы подсчитываем, иначе сбрасываем.
Ответ: 120
Задача (Обращаемся к соседу, ещё сложнее)
Текстовый файл состоит не более чем из 106 символов арабских цифр (0, 1, …,9). Определите максимальное количество идущих подряд нечётных цифр, расположенных в неубывающем порядке. Для выполнения этого задания следует написать программу.
Решение:
f=open('24_3.txt') s=f.read() k=1 kmax=0 for i in range(0, len(s)-1): if s[i]<=s[i+1] and s[i] in '13579' and s[i+1] in '13579' : k=k+1 kmax=max(k, kmax) else: k=1 print(kmax)
Здесь опять можно применить знаки сравнения прям к символам. Удобно проверить принадлежность к нечётным цифрам конструкцией s[i] in ‘13579’. Нечётной цифрой должна быть как текущая, так и следующая.
Ответ: 8
Решим ещё одну тренировочную задачу из ЕГЭ по информатике 2023.
Задача (Обращаемся к соседу, ещё сложнее, закрепление)
Текстовый файл состоит не более чем из 106 символов 1, 2, 3, A, B, С. Определите максимальное количество идущих подряд символов, среди которых никакие две буквы и никакие две цифры не стоят рядом. Для выполнения этого задания следует написать программу.
Решение:
f=open('24_4.txt') s=f.read() k=1 kmax=0 for i in range(0, len(s)-1): if (s[i] in '123' and s[i+1] in 'ABC') or (s[i] in 'ABC' and s[i+1] in '123') : k=k+1 kmax=max(k, kmax) else: k=1 print(kmax)
В этой задаче цифры и буквы должны чередоваться. Если у нас цифра, то следующая должны быть буква, или наоборот, если у нас буква, то следующая должна быть цифра. В этих двух случаях прибавляем к счётчику 1.
Ответ: 20
Задача (Исключаем строку из 2-х символов, демо 2022)
Текстовый файл состоит из символов P, Q, R и S.
Определите максимальное количество идущих подряд символов
в прилагаемом файле, среди которых нет идущих подряд символов P.
Для выполнения этого задания следует написать программу.
Решение:
Напишем решение на языке Python.
f=open('24_5.txt') s=f.read() k=1 kmax=0 for i in range(0, len(s)-1): if s[i]=='P' and s[i+1]=='P': k=1 else: k=k+1 kmax = max(k, kmax) print(kmax)
Подсчитываем символы, пока не встретилась комбинация двух P подряд. Как только встретилась данная комбинация, сбрасываем счётчик на 1. Здесь мы сбрасываем счётчик на значение 1, чтобы учесть один символ, которые находится в самой комбинации PP. И в начале мы тоже устанавливаем счётчик в значение 1 по этой же причине.
Мы проходим в цикле for до длины строки минус один. Значение 1 в счётчике при сбросе и в начале программы так же компенсирует и тот момент, что мы не подсчитываем последний символ!
При изменении счётчика, сохраняем максимальное значение в переменной mx
Если бы у нас была вместо PP другая комбинация, состоящая к примеру из 5 символов, то мы бы тогда в начале и при сбросе писали в счётчик значение 5-1=4.
Здесь тоже работает негласное правило, обращаемся к соседу, значит, счётчик устанавливаем в 1.
В этой задаче получается ответ 188.
Ответ: 188
Задача (Исключаем подстроку из 3-х символов)
Текстовый файл состоит из символов арабских цифр(0, 1, …,9).
Определите максимальное количество идущих подряд символов
в прилагаемом файле, среди которых нет трёх символов 0, стоящих рядом.
Для выполнения этого задания следует написать программу.
Решение:
Напишем решение на языке Python.
f=open('24_6.txt') s=f.read() k=2 kmax=0 for i in range(0, len(s)-2): if s[i]=='0' and s[i+1]=='0' and s[i+2]=='0': k=2 else: k=k+1 kmax = max(k, kmax) print(kmax)
Чтобы понять это решение, нужно посмотреть предыдущую задачу. Мы здесь обращаемся к двум соседям, значит, счётчик устанавливаем в 2. Так же проходим в цикле до len(s)-2. Нежелательная строка может состоять не только из одинаковых символов. Может быть строка «XYYZ», к примеру.
Ответ: 7684
Задача (Не более одного символа Z)
Текстовый файл состоит не более чем из 106 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых символ Z встречается не более одного раза.
Решение:
В нашей цепочке один раз можно встретиь символ Z, а два раза уже нельзя. Здесь мы применим функцию .split(). Как работает эта фнкция? Напишем тестовую программу.
s='sadqttqtreq' a=s.split('q') print(a)
Результат данной программы будет следующим:
[‘sad’, ‘tt’, ‘tre’, »]
Команда split «разрезает» строку по символу «q». В результате мы получаем массив с кусочками этой строки.
Решение нашей задачи.
f=open('24_7.txt') s=f.read() a=s.split('Z') k=0 kmax=0 for i in range(0, len(a)-1): k = len(a[i]) + 1 + len(a[i+1]) kmax = max(k, kmax) print(kmax)
Разрезаем нашу строку по символу «Z». Пробегаемся уже по массиву a. Цепочка-кандидат это текущий кусочек (a[i]), символ Z (1) и следующий кусочек (a[i+1]).
Каждого кандитата проверяем сразу на максимальность.
Ответ: 43
Задача (Не более двух символов Z)
Текстовый файл состоит не более чем из 106 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых символ Z встречается не более двух раз.
Решение:
Решение аналогично предыдущему.
f=open('24_7.txt') s=f.read() a=s.split('Z') k=0 kmax=0 for i in range(0, len(a)-2): k = len(a[i]) + 1 + len(a[i+1]) + 1 + len(a[i+2]) kmax = max(k, kmax) print(kmax)
Ответ: 50
Задача (Звенья)
Текстовый файл состоит не более чем из 106 символов X, Y и Z. Определите максимальную длину цепочки символов, состоящей из повторяющихся фрагментов XYZ. Цепочка должна начинаться с символа X и заканчиваться символом Z. Например, для строки ZZZXYZXYZXZZZ длина цепочки равна 6: XYZ+XYZ
Решение:
Если мы подсчитаем количество идущих подряд звеньев XYZ, то, можно сказать, дело сделано.
f=open('24_8.txt') s=f.read() s=s.replace('XYZ', '1') k=0 kmax=0 for i in range(0, len(s)): if s[i]=='1': k=k+1 kmax=max(k, kmax) else: k=0 print(kmax*3)
Мы с помощью команды replace заменили звенья на «1» (на символ, которого точно нет в файле). Теперь задача свелась к самой простой, которую мы рассматривали в начале статьи. Нужно просто подсчитать количество идущих поряд единиц.
В ответе нас просили указать количество символов, а не звеньев, поэтому переменную kmax умножаем на 3.
Ответ: 66
Задача (Звенья, закрепление)
Текстовый файл состоит не более, чем из 106 символов из набора A, B, С. Найдите максимальное количество идущих пар символов AC или AB. Искомая подстрока может включать только пары AB, только пары AC или содержать одновременно как пары AC, так и пары AB.
Решение:
f=open('24_9.txt') s=f.read() s=s.replace('AB', '1') s=s.replace('AC', '1') k=0 kmax=0 for i in range(0, len(s)): if s[i]=='1': k=k+1 kmax=max(k, kmax) else: k=0 print(kmax)
Здесь нам подходит звено, как и AB, так и AC. В ответе нужно указать количество пар, поэтому не на что умножать переменную kmax не нужно.
Ответ: 19
Задача (Звенья, основная волна 20.06.22)
Текстовый файл состоит из символов A, B, C, D и O. Определите максимальное количество идущих подряд пар символов вида согласная + гласная в прилагаемом файле. Для выполенения этого задания следует написать программу.
Решение:
f=open('24_10.txt') s=f.read() s=s.replace('BA', '1') s=s.replace('CA', '1') s=s.replace('DA', '1') s=s.replace('BO', '1') s=s.replace('CO', '1') s=s.replace('DO', '1') k=0 kmax=0 for i in range(0, len(s)): if s[i]=='1': k=k+1 kmax=max(k, kmax) else: k=0 print(kmax)
Ответ: 174
Задача (Звенья, последнее звено неполное)
Текстовый файл состоит не более чем из 106 символов X, Y и Z. Определите максимальную длину цепочки вида XYZXYZXYZ… (составленной из фрагментов XYZ, последний фрагмент может быть неполным). Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Решение:
Т.к. последнее звено может быть неполным, здесь удобно применить другой алгоритм.
Пусть в начале показания счётчика равно нулю. Если мы находим нужный нам символ в нужной последовательности, то прибавляем к счётчику 1. Если последовательность сбивается, то ставим счётчик в ноль.
На рисунке представлен данный алгоритм. В нижней строке указано показание счётчика в момент анализа символа.
На данном рисунке максимальная длина цепочки нужных символов равна 9.
Видим, что для символа X, когда он находится на своём месте, остаток от деления значения счётчика на 3 равен 0.
Для символа Y, когда данный символ находится на своём месте, остаток от деления значения счётчика на 3 равен 1.
Для символа Z, когда данный символ находится на своём месте, остаток от деления значения счётчика на 3 равен 2.
Мы смотрим остаток от деления на 3, потому что у нас длина звена равна трём (XYZ).
Таким образом, мы и наш анализ очередного символа привяжем к показанию счётчика:
f=open('24_11.txt') s=f.read() k=0 kmax=0 for i in range(0, len(s)): if (s[i]=='X' and k%3==0) or (s[i]=='Y' and k%3==1) or (s[i]=='Z' and k%3==2): k=k+1 kmax = max(k, kmax) else: if s[i]=='X': k=1 else: k=0 print(kmax)
Важный момент: Если нужную цепочку прервал символ X, то нужно счётчик сразу выставить в 1, иначе может произойти такая ошибка:
Т.е. первые три нужных символа в цепочке алгоритм не засчитал.
Поэтому мы не просто сбрасываем счётчик в ноль, а прописываем условие:
if s[i]=='X': k=1 else: k=0
Ответ: 13
Задача (Полезный приём)
Текстовый файл 24-157.txt состоит не более чем из 106 символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Определите символ, который чаще всего встречается в файле между двумя одинаковыми символами. Например, в тексте CCBAABABCBC есть комбинации ABA, BAB, BCB и CBC. Чаще всего – 2 раза – между двумя одинаковыми символами стоит B, в ответе для этого случая надо написать B2 (без пробелов и других разделителей). Если таких символов несколько, выведите тот, который стоит раньше в алфавите.
Решение:
f=open('24-157.txt') s=f.read() a=[0]*150 for i in range(0, len(s)-2): if s[i]==s[i+2]: a[ord(s[i+1])] = a[ord(s[i+1])] + 1 ch='' mx=0 for i in range(0, 150): if a[i]>mx: mx=a[i] ch=chr(i) print(ch, mx)
Здесь мы заводим массив a. Индексы этого массива — это коды ANSI всех букв латинского алфавита (ABC…Z). Ведь, как мы знаем, каждая буква кодируется определённым числом (кодом ANSI). Вот часть этой таблицы.
Например, буква A кодируется кодом 65. Коды увеличиваются в алфавитном порядке на 1. Буква Z кодируется числом 90. Таким образом, 150 ячеек точно хватит для нашего алфавита. Здесь берём с запасом, потому что на экзамене можно точно не вспомнить коды, но достаточно запомнить, что 150 ячеек вполне хватит для заглавных и строчных букв латинского алфавита.
Значит, ячейка 65 отвечает за букву A, ячейка 66 отвечает за букву B и т.д. Если мы встретили букву между двумя одинаковыми буквами, то её ячейка увеличивается на 1.
Функция ord() превращает символ в код ANSI.
После того, как мы прошли всю строку и собрали информацию о наших буквах, нужно пройти массив a и найти наибольшее число в нём.
Здесь мы уже не пользуемся функцией max, а используем условие, потому что нужно кроме максимального числа тянуть ещё один параметр — сам код (переменную i). Функция chr() превращает код ANSI обратно в символ.
Ответ: W1608
Задача (Строки различной длины)
Текстовый файл 24-164.txt состоит не более чем из 106 символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Текст разбит на строки различной длины. Необходимо найти строку, содержащую самую длинную цепочку стоящих подряд одинаковых букв. Если таких строк несколько, надо взять ту, которая в файле встретилась раньше. Определите, какая буква встречается в этой строке чаще всего. Если таких букв несколько, надо взять ту, которая стоит раньше в алфавите. Запишите в ответе эту букву, а затем – сколько раз она встречается во всем файле.
Пример. Исходный файл:
ZZQABA
ZALAAC
QRAQUT
В этом примере в первой и второй строках наибольшая длина цепочек одинаковых буквы равна 2 (ZZ в первой строке, AA во второй), в третьей – 1. Берём первую строку, т.к. она находится в файле раньше. В этой строке чаще других встречаются буквы Z и A (по 2 раза), выбираем букву A, т. к. она стоит раньше в алфавите. В ответе для этого примера надо записать A6, так как во всех строках файла буква A встречается 6 раз.
Решение:
Для считывания построчно файла, будем использовать конструкцию, как в задании 17. В начале найдём строчку, содержащую самую длинную цепочку стоящих подряд одинаковых букв.
f=open('24-164.txt') kmax=0 count=0 n=-1 for s in f.readlines(): count=count+1 k=1 for i in range(0, len(s)-1): if s[i]==s[i+1]: k=k+1 if k>kmax: kmax=k n=count else: k=1 print(n)
Получается строка под номером 162. Переменная count считает строки по порядку. В переменную n сохраняем номер нужной строки. Опять пользуемся условием, а не функцией max, т.к. здесь нужно и обновлять kmax, и сохранять значение n. У нас условие строгое k>kmax, значит, сохранится первая строка с наибольшей искомой цепочкой.
f=open('24-164.txt') count=0 a=[0]*150 for s in f.readlines(): count=count+1 k=1 if count==162: for i in range(0, len(s)): a[ord(s[i])] = a[ord(s[i])] + 1 ch='' mx=0 for i in range(0, 150): if a[i] > mx: mx=a[i] ch=chr(i) print(ch)
Теперь нас интересует только строка под номером 162. Далее используем приём из прошлой задачи. Заводим массив a из 150 ячеек и используем таблицу кодов ANSI. Так определяем какая буква встретилась чаще всего в строке под номером 162. Получается буква K.
f=open('24-164.txt') s=f.read() print(s.count('K'))
Осталось найти количестов букв K во всём файле. Для этого используем функцию .count()
Ответ: K36582
В задаче 15 «Задача (Полезный приём)», созданы переменные k и kmax — напрасно, они не используются.
Убрал, по привычке написал.
Выполнение алгоритмов для исполнителя
Разбор заданий № 12 КЕГЭ 2021
(соответствует за да нию № 14 ЕГЭ 2020)
Проверяемые элементы содержания: Умение исполнить алгоритм для конкретного исполнителя с
фиксированным набором команд.
(повышенный уровень, время – 6 мин)
Что нужно знать:
Алгоритм1 — |
||
от исходных данных к |
||
Алгоритм может |
||
а может — последовательность действий |
||
составлением должны быть чётко определены начальные |
||
получить. |
||
Разрабатывать алгоритмы может только |
||
Исполняют |
||
станки, спутники, |
||
Исполнитель2 – устройство,
способное выполнять определённый набор команд.
Команды, которые |
команд исполнителя |
Среди автоматических устройств наиболее совершенными исполнителями |
являются роботы. Во многих случаях и сам человек является исполнителем |
алгоритмов. |
обозначения:
Целая часть3 |
Дробная часть4 |
Информационные ресурсы:
1.
Теория:
Алгоритмы
2. Задания
для тренировки: https://inf-ege.sdamgia.ru/?redir=1
a. Исполнитель
Редактор
b. Исполнитель
Чертёжник
c. Остановка в
заданной клетке, циклы с оператором ПОКА
d. Нестандартные
задачи
e. Остановка в
заданной клетке, циклы с операторами ПОКА и ЕСЛИ
f.
Остановка в клетке, из которой начато движение
3.
Онлайн-тест
Константина Полякова для подготовки к ЕГЭ:
B14-d — Анализ алгоритма для Чертёжника B12-
Анализ алгоритма для Редактора
Содержание:
Исполнитель
“РЕДАКТОР”
Исполнитель
“ЧЕРТЁЖНИК”
Исполнитель
“РОБОТ”
1
Что такое алгоритм
2
Разнообразие исполнителей
3
Wiki. Целая часть
4
Wiki. Дробная часть
Исполнитель “РЕДАКТОР”
Редактор может |
|
цепочки цифр. |
|
А) заменить (v, w) |
Эта команда заменяет в Например, Если в строке нет вхождений цепочки v, |
Б) нашлось (v) |
Эта команда проверяет, встречается ли |
ПОКА условие последовательность команд КОНЕЦ ПОКА |
Цикл выполняется, |
ЕСЛИ условие ТО команда1 ИНАЧЕ |
В конструкции ЕСЛИ выполняется команда1 |
РЕКОМЕНДАЦИИ для решения задач
исполнителя РЕДАКТОР:
Задачи данного типа можно решать |
|||||
1. аналитически (без |
|||||
2. в ручном режиме в |
|||||
a. создать строку |
|||||
b. имитируя действия исполнителя, применить к строке |
|||||
3. перевести программу на |
|||||
на языке исполнителя РЕДАКТОР |
на языка программирования Python |
||||
ПОКА условие последовательность команд КОНЕЦ |
while <условие> : последовательность |
||||
ЕСЛИ условие ТО команда1 ИНАЧЕ |
if <условие>: команда1 else: команда2 |
||||
заменить (v, w) |
S.replace(v, |
||||
Метод replace[1]
Метод replace |
Формат: S.replace(old, |
подстроку new. |
S.replace(old, new, |
чем первые count |
За да ние № 12
(ДЕМО ФИПИ КЕГЭ 2021)
(соответствует за дан ию № 14 ДЕМО ЕГЭ-2020 ФИПИ)
Какая |
строке, состоящей из 70 |
строку. |
решение на Python:
НАЧАЛО
ПОКА нашлось
(2222) ИЛИ нашлось (8888)
ЕСЛИ нашлось
(2222)
ТО заменить
(2222, 88)
ИНАЧЕ заменить
(8888, 22)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА КОНЕЦ
Решение:
Действие |
Результат |
|
1. |
нашлось (8888): заменить (8888, 22), заменить (8888, 22) |
22228…888 (70 — 8 = |
2. |
нашлось (2222): заменить (2222, 88) |
888…888 (62 + 2 = 64 |
В результате выполнения |
||
… |
Выполним целочисленное деление 70 на 6: |
|
n |
нашлось (8888): заменить (8888, 22) |
22 |
Ответ:
22
Задание 12 № 36025 (ЕГЭ−2021. Досрочная
волна)
Дана программа для
Редактора:
НАЧАЛО решение
на Python:
ПОКА нашлось (1111) ИЛИ нашлось (88888)
ЕСЛИ
нашлось (1111)
ТО
заменить (1111, 888)
ИНАЧЕ
заменить (88888, 888)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ
Какая |
строке, состоящей из 81 |
строку. |
Решение:
Действие |
Результат |
|
1. |
нашлось (1111): заменить (1111, 888), заменить (1111, |
8888…881 60 |
[81/4] = 20 раз “1111” |
||
2. |
нашлось (88888): заменить (88888, 888), … |
88888888…88881 36 |
[60/5] = 12 раз “88888” |
||
3. |
нашлось (88888): заменить (88888, 888), … |
88888…881 22 |
[36/5] = 7 раз “88888” |
||
4. |
нашлось (88888): заменить (88888, 888), … |
888888888888881 14 |
[22/5] = 4 раза “88888” |
||
5. |
нашлось (88888): заменить (88888, 888), … |
88888888881 10 |
[14/5] = 2 раза “88888” |
||
6. |
нашлось (88888): заменить (88888, 888), … |
8888881 6 |
[10/5] = 2 раза “88888” |
||
7. |
нашлось (88888): заменить (88888, 888), … |
88881 4 |
[6/5] = 1 раз “88888” |
Ответ: 88881 Разбор заданий
№ 12. Готовимся к итоговой аттестации 2021.
Лещинер, В.Р.[2]
Вариант № 1 |
|
На |
|
“>”, а затем |
|
произвольном порядке. |
|
получившейся в |
|
Так, |
|
цифр 4, то верным |
НАЧАЛО
ПОКА нашлось
(>1) ИЛИ нашлось (>2) ИЛИ нашлось (>3)
ЕСЛИ
нашлось (>1)
ТО заменить
(>1,22>)
КОНЕЦ
ЕСЛИ
ЕСЛИ
нашлось (>2)
ТО заменить
(>2, 2>)
КОНЕЦ
ЕСЛИ
ЕСЛИ нашлось
(>3)
ТО заменить
(>3, 1>)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ
Решение (решение
на Python:):
Ответ:
138
Вариант № 2 |
|
На вход |
|
по 60 цифр 4, 6 |
|
Определите, какие цифры будут находиться |
|
получившейся в |
|
последовательно слева направо, самая левая имеет |
|
В ответе запишите три полученные цифры |
|
порядке возрас тания |
|
Так, например, если бы на 25-м месте стояла |
НАЧАЛО
ПОКА нашлось
(46) ИЛИ нашлось (84) ИЛИ нашлось (86)
ЕСЛИ нашлось
(46)
ТО заменить
(46, 64)
КОНЕЦ
ЕСЛИ
ЕСЛИ нашлось
(84)
ТО заменить
(84, 48)
КОНЕЦ
ЕСЛИ
ЕСЛИ нашлось
(86)
ТО заменить
(86, 68)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ
Решение (решение
на Python):
Ответ:
648
Пример № 3 |
|
Какая строка получится в результате |
|
стро ке, состоящей из 68 |
|
строку. |
НАЧАЛО
ПОКА нашлось
(222) ИЛИ нашлось (888)
ЕСЛИ нашлось
(222)
ТО заменить
(222,
ИНАЧЕ заменить
(888, 2)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ
Решение (решение
на Python):
Ответ:
28
За да ние № 14 (ДЕМО ЕГЭ-2019 ФИПИ)
Какая |
|
строке, состоящей из 82 |
|
строку. |
|
НАЧАЛО ПОКА нашлось (11111) ИЛИ ЕСЛИ нашлось ТО заменить ИНАЧЕ ЕСЛИ нашлось ТО заменить КОНЕЦ ЕСЛИ КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ |
решение на Python: |
Решение:
Действие |
Результат |
|
1. |
нашлось (11111): заменить (11111, 88), заменить (11111, |
8888…8811 32 |
[82/5] = 16 раз “11111” |
||
2. |
нашлось (888): заменить (888, 8), … |
88888888888811 12 |
[32/3] = 10 раз “888” |
||
3. |
нашлось (888): заменить (888, 8), … |
888811 |
[12/3] = 4 раза “888” |
||
4. |
нашлось (888): заменить (888, |
8811 |
Ответ:
8811
Разбор заданий № 14. СтатГрад.
Подготовка к ЕГЭ 2019[3]
Вариант 1
Какая |
строке, состоящей из 85 |
строку. |
НАЧАЛО
ПОКА
нашлось (333) ИЛИ нашлось (777)
ЕСЛИ
нашлось (333)
ТО
заменить (333, 7)
ИНАЧЕ
заменить (777, 3)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ Решение:
Действие |
Результат |
|
1. |
нашлось (777): заменить (777, 3), заменить (777, 3), заменить |
333777…777 (85 — 9 = 76 цифр 7) |
2. |
нашлось (333): заменить (333, 7) |
777…777 (76 +1 = 77 цифр 7) |
В результате выполнения |
||
… |
Выполним целочисленное деление 85 на 8: |
|
n |
нашлось (777): заменить (777, 3) |
377 |
Ответ:
377
Вариант 2
Какая |
строке, состоящей из 76 |
строку. |
НАЧАЛО
ПОКА нашлось
(666) ИЛИ нашлось (999)
ЕСЛИ нашлось
(666)
ТО заменить
(666, 9)
ИНАЧЕ заменить
(999, 6)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ
Решение:
Действие |
Результат |
|
1. |
нашлось (999): заменить (999, 6), заменить (999, 6), заменить |
666999…999 (76 — 9 = 67 цифр 9) |
2. |
нашлось (666): заменить (666, 9) |
999…999 (67 +1 = 68 цифр 9) |
В |
||
… |
Выполним целочисленное |
|
n |
нашлось (999): заменить (999, 6) |
69 |
Решение на Python:
Ответ:
69
Вариант 3 |
|
Какая строка получится |
|
строке, состоящей из 1…12…2 |
|
полученную строку. |
НАЧАЛО
ПОКА нашлось
(111) ИЛИ нашлось (222)
ЕСЛИ нашлось
(111)
ТО заменить
(111, 2)
КОНЕЦ
ЕСЛИ
ЕСЛИ нашлось
(222)
ТО заменить
(222, 1)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ Решение:
Дано: 1111111122222222
Действие |
Результат |
|
1. |
нашлось (111): заменить (111, 2), заменить (111, 2), … |
221122222222 |
2. |
нашлось (222): заменить (222, 1) |
2211122222 (8 — |
3. |
нашлось (111): заменить (111, 2) |
22222222 (5 |
4. |
нашлось (222): заменить (222, 1), заменить (222, 1) |
1122 |
Ответ:
1122
Вариант 4 |
|
Какая строка получится |
|
строке, состоящей из 1…12…2 |
|
полученную строку. |
НАЧАЛО
ПОКА нашлось
(111) ИЛИ нашлось (222)
ЕСЛИ нашлось
(111)
ТО заменить
(111, 2)
КОНЕЦ
ЕСЛИ
ЕСЛИ нашлось
(222)
ТО заменить
(222, 1)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ
Решение:
Дано: 11111112222222
Действие |
Результат |
|
1. |
нашлось (111): заменить (111, 2), заменить (111, 2) |
2212222222 |
2. |
нашлось (222): заменить (222, 1), заменить (222, 1) |
221112 |
3. |
нашлось (111): заменить (111, 2) |
2222 |
4. |
нашлось (222): заменить (222, 1) |
12 |
Ответ:
12
Вариант 5
Какая |
строке, состоящей из 77 |
НАЧАЛО
ПОКА нашлось
(11)
ЕСЛИ нашлось
(222)
ТО
заменить (222, 1)
ИНАЧЕ
заменить (11, 2)
КОНЕЦ
ЕСЛИ КОНЕЦ ПОКА КОНЕЦ Решение:
Дано: 1111…1111
Действие |
Результат |
|
1. |
нашлось (11): заменить (11, 2), заменить (11, 2), заменить |
22211…1111 (77 — 6 = 71 цифра |
2. |
нашлось (11): нашлось |
111…1111 (71 + 1 = 72 цифры 1) |
3. |
нашлось (11): заменить (11, 2), заменить (11, 2), заменить |
22211…1111 (72 — 6 = 66 цифра 1) |
4. |
нашлось (11): нашлось |
111…1111 (66 + 1 = 67 цифры 1) |
В |
||
… |
Выполним целочисленное |
Ответ:
2221
Вариант 6
Какая |
строке, состоящей из 99 |
НАЧАЛО
ПОКА нашлось
(111)
ЕСЛИ нашлось
(222)
ТО
заменить (222, 1)
ИНАЧЕ
заменить (111, 2)
КОНЕЦ
ЕСЛИ КОНЕЦ ПОКА КОНЕЦ
Решение:
Дано: 1111…1111
Действие |
Результат |
|
1. |
нашлось (111): заменить (111, 2), заменить (111, 2), заменить |
22211…1111 (99 — 9 = 90 цифр 1) |
2. |
нашлось (111): нашлось |
111…1111 (90 + 1 = 91 цифра 1) |
3. |
нашлось (111): заменить (111, 2), заменить (111, 2), заменить |
22211…1111 (91 — 9 = 82 цифры 1) |
4. |
нашлось (111): нашлось |
111…1111 (82 + 1 = 83 цифры 1) |
В |
||
… |
Выполним целочисленное |
Ответ:
22211
Разбор заданий № 14. ЕГЭ 2020.
Информатика. Ушаков Д.М. 10 тренировочных вариантов[4]
Вариант № 3
Какая |
строке, состоящей из 80 |
строку. |
НАЧАЛО
ПОКА нашлось
(777) ИЛИ нашлось (888)
ЕСЛИ нашлось
(777)
ТО заменить
(777,
ИНАЧЕ заменить
(888, 7)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ Решение:
Действие |
Результат |
|
1. |
нашлось (777): заменить (777, 8), заменить (777, 8), заменить |
88888…8877 26 |
[80/3] = 26 раз “777” заменяются на “8” и в конце |
||
2. |
нашлось (888): заменить (888, 7), заменить (888, 7), заменить |
777888…8877 17 |
3. |
нашлось (777): заменить (777, |
888…8877 18 |
В результате выполнения блока команд {2 и 3}, т.е. |
||
… |
Выполним целочисленное деление 26 на 8: |
Ответ:
8877
Вариант № 4
Какая |
строке, состоящей из 70 |
строку. |
НАЧАЛО
ПОКА нашлось
(555) ИЛИ нашлось (444)
ЕСЛИ нашлось
(555)
ТО заменить
(555, 4)
ИНАЧЕ заменить
(444, 5)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ Решение:
Действие |
Результат |
|
1. |
нашлось (555): заменить (555, 4), …, заменить (555, |
444444444444444444444445 |
По ветви “ТО” проходим строку до конца: [70/3] = 23 – количество цифр “4”; {70 / 3} = 1– |
||
2. |
нашлось (444): заменить (444, 5), заменить (444, 5), заменить |
555444444444444445 14 |
По ветви “ИНАЧЕ” заменяем 9 цифр “4” на 3 цифры “5” |
||
3 |
нашлось (555): заменить (555, 4) |
4444444444444445 15 |
В результате выполнения блока команд {2 и 3}, т.е. |
||
… |
Выполним целочисленное деление 23 на 8: Целая часть остаток – {23 / 8} = 7. За 2 периода строка |
|
n |
нашлось (444): заменить (444, 5), заменить (444, 5) |
5545 |
Ответ:
5545
Вариант № 8
Какая |
строке, состоящей из 65 |
строку. |
Действие |
Результат |
|
1. |
нашлось (444): заменить (444, 5), …, заменить (444, |
55555555555555555555544 “5” |
По ветви “ТО” проходим строку до конца: [65/3] = 21 – количество цифр “5”; {65 / 3} = 2 – |
||
2. |
нашлось (555): заменить (555, 4), заменить (555, 4), заменить |
44455555555555544 цифр |
По ветви “ИНАЧЕ” заменяем 9 цифр “5” на 3 цифры “4” |
||
3 |
нашлось (444): заменить (444, 5) |
555555555555544 цифр |
В результате выполнения блока команд {2 и 3}, т.е. |
||
… |
Выполним целочисленное деление 21 на 8: Целая часть остаток – {21 / 8} = 5. За 2 периода строка |
|
n |
нашлось (555): заменить (555, 1), заменить (444, 5) |
45544 |
НАЧАЛО
ПОКА нашлось
(444) ИЛИ нашлось (555)
ЕСЛИ нашлось
(444)
ТО заменить
(444, 5)
ИНАЧЕ заменить
(555, 4)
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ Решение:
Ответ:
45544
Вариант № 9
Какая |
строке, состоящей из 69 |
строку. |
НАЧАЛО
ПОКА нашлось
(777) ИЛИ нашлось (888)
ЕСЛИ нашлось
(888)
ТО заменить
(888, 7)
ИНАЧЕ заменить
(777,
КОНЕЦ
ЕСЛИ
КОНЕЦ
ПОКА
КОНЕЦ Решение:
Действие |
Результат |
|
1. |
нашлось (777): заменить (777, 8), заменить (777, 8), заменить |
8887…77 (69 — 9 = 60 |
2. |
нашлось (888): заменить (888, 7) |
777…77 (60 + 1 = 61 |
В результате выполнения |
||
… |
Выполним целочисленное деление 69 на 8: |
|
n |
нашлось (777): заменить (777, |
877 |
Ответ:
877
Исполнитель “ЧЕРТЁЖНИК”
Исполнитель Чертёжник |
|
виде линии. Чертёжник может выполнять команду |
|
целые |
|
точку с координатами (x + a, y + b). Если числа a, b |
|
соо т вет ству ю щей ко |
|
Например, |
|
на (2, −3) переместит |
|
ПОВТОРИ число РАЗ последовательность КОНЕЦ |
Цикл означает, что |
За да ние № 14 (ДЕМО ЕГЭ-2018 ФИПИ)
Чертёжнику был дан для исполнения |
величины смещения в |
НАЧАЛО
сместиться на (4, 6)
ПОВТОРИ … РАЗ
сместиться на (…, …)
сместиться на (4,
-6)
КОНЕЦ ПОВТОРИ
сместиться на (-28,
-22)
КОНЕЦ
В результате выполнения этого алгоритма |
точку. Какое |
«ПОВТОРИ |
Решение:
Действие |
Описание |
(x, y) |
— исходная точка |
(x + 4, y + 6) |
сместиться на (4, |
n × (x1+ 4, |
цикл ПОВТОРИ где n — количество |
x + 4 + |
— система уравнений |
n × |
n – наибольший общий |
Решение
(2 вариант)
1.
Сложим
смещения до и после выполнения цикла. Получим числа
-24 и -16.
2.
n
= НОД(16, 24) = 8.
Ответ:
8
Разбор заданий № 14. ЕГЭ
2020. Информатика. Ушаков Д.М. 10 тренировочных вариантов
Вариант № 5
Чертёжнику был дан для исполнения |
обозначены неизвестные |
НАЧАЛО
сместиться на (-5,
ПОВТОРИ n РАЗ
сместиться на (a,
b)
сместиться на (14,
18)
КОНЕЦ ПОВТОРИ
сместиться на (-16,
-23)
КОНЕЦ
Укажите наименьшее возможное |
значения чисел a и |
исходную точку. |
Решение:
Действие |
Описание |
(x, y) |
— исходная точка |
(x – 5, y + |
сместиться на (-5, |
n × (a+ 14, b + 18) |
цикл ПОВТОРИ |
x – 5 + n × (a+ 14) – 16 = x y + 8 + n × (b + |
— система уравнений |
n × (a + 14) = 21 n × (b + n = НОД(15, 21) = 3 |
n – наименьший общий |
Решение
(2 вариант)
1.
Сложим
смещения до и после выполнения цикла. Получим числа — 21 и -15.
2.
n
= НОД(15, 21) = 3.
Ответ:
3
Вариант № 10
Чертёжнику был дан для исполнения |
обозначены неизвестные |
НАЧАЛО
сместиться на (12,
-2)
ПОВТОРИ n РАЗ
сместиться на (a,
b)
сместиться на (12,
КОНЕЦ ПОВТОРИ
сместиться на (-47,
-18)
КОНЕЦ
Укажите наименьшее возможное |
значения чисел a и |
исходную точку. |
Решение:
Действие |
Описание |
(x, y) |
— исходная точка |
(x + 12, y – 2) |
сместиться на (12, |
n × (a+ 12, b + |
цикл ПОВТОРИ |
x + 12 + n × (a+ 12) – 47 = x y – 2 + n × (b |
— система уравнений |
n × (a + 12) = 35 n × (b + n = НОД(20, 35) = 5 |
n – наименьший общий |
Решение
(2 вариант)
1.
Сложим
смещения до и после выполнения цикла. Получим числа — 35 и -20.
2.
n
= НОД(20, 35) = 5.
Ответ:
5
Исполнитель “РОБОТ”
Система команд исполнителя РОБОТ: |
|||
Перемещение на |
|||
вверх ↑ |
вниз ↓ |
влево ← |
вправо → |
Проверка истинности |
|||
сверху |
снизу |
слева |
справа |
Цикл Цикл ПОКА КОНЕЦ ПОКА |
|||
Если РОБОТ начнёт |
|||
прервётся. |
Разбор заданий № 14. ЕГЭ
2020. Информатика. Ушаков Д.М. 10 тренировочных вариантов
Вариант № 1
Сколько |
|
предложенную ниже |
|
начал движение? |
|
НАЧАЛО |
|
ПОКА <сверху |
|
ПОКА <справа |
|
ПОКА <снизу |
|
ПОКА <слева |
|
КОНЕЦ |
Решение:
Ответ:
4
Вариант № 2
Сколько |
|
выполнив предложенную |
|
клетке (клетка |
|
НАЧАЛО |
|
ПОКА <справа |
|
ПОКА <справа |
|
вправо |
|
КОНЕЦ ПОКА |
|
ПОКА <снизу |
|
вниз |
|
КОНЕЦ ПОКА |
|
КОНЕЦ ПОКА |
|
КОНЕЦ |
Решение:
Ответ:
27
Вариант № 6
Сколько |
|
предложенную ниже |
|
начал движение? |
|
НАЧАЛО |
|
ПОКА <слева |
|
ПОКА <сверху |
|
ПОКА <справа |
|
ПОКА <снизу |
|
КОНЕЦ |
Решение:
Ответ:
4 Вариант № 7
Сколько |
|
выполнив предложенную |
|
клетке (клетка |
|
НАЧАЛО |
|
ПОКА <справа |
|
ПОКА <справа |
|
вправо |
|
КОНЕЦ ПОКА |
|
влево |
|
ПОКА <снизу |
|
вниз |
|
КОНЕЦ ПОКА |
|
ЕСЛИ <справа |
|
вправо |
|
КОНЕЦ ЕСЛИ |
|
КОНЕЦ ПОКА |
|
КОНЕЦ |
Решение:
Ответ:
22
Если дать определение схеме, можно отметить основной момент: в первую очередь подразумевается абстракция какого-нибудь процесса (системы), при которой наиболее важные части отображаются наглядно (визуально). Схемы использовались на протяжении всей истории человечества: это и чертежи пирамид, и карты сухопутных и морских путей, и принципиальные электрические схемы.
Те же мореплаватели, создавая карты, делали это в соответствии с единой системой обозначений — это позволяло обмениваться информацией друг с другом. То же самое справедливо и для визуального отображения схем алгоритмов — существуют правила, единые обозначения и стандарты, регламентирующие их применение. В России это ГОСТ 19.701-90 «Схемы алгоритмов программ, данных и систем», который близок к международному стандарту ISO 5807:1985.
Главные элементы блок-схем алгоритмов
Прежде чем продолжить, стоит дать определение блок-схемы в соответствии со стандартом — речь идёт о совокупности символов, которые отвечают этапам работы алгоритма, причём эти символы имеют соединяющие линии:
— пунктирную — для соединения с комментарием;
— сплошную — отображает зависимости по управлению, допускается наличие на ней стрелки. В соответствии со стандартом составитель может не указывать стрелку, если дуга направляется сверху вниз или слева направо.
Также существуют и дополнительные виды линий, которые применяются, когда надо дать описание блок-схемам параллельных алгоритмов, однако в этой статье мы их рассматривать не будем, как и ряд других дополнительных спецсимволов.
В таблице ниже дан перечень основных символов, используемых при описании алгоритмов:
Задача и блок-схема алгоритма
На картинке ниже дан алгоритм в виде схемы. В нем мы видим оператор присваивания :=, то есть X := 1 будет означать, что переменная Х примет значение 1. По результату алгоритмических действий надо определить итог работы представленного алгоритма, используя следующие входные данные: Х = 7, Y = 12.
Схема этого алгоритма и решение задачи будут выглядеть следующим образом:
Смотрим, как следует решать подобное задание:
1. Блок ввода данных определяет исходные значения Х и Y (в соответствии с условием это 7 и 12).
2. В первом блоке значения Х и Y сравниваются. Так как условие не является верным (7 < 12), осуществляется переход по линии с пометкой «нет».
3. Второй блок служит для второго сравнения — оно верное, в результате чего следующее действие — это переход по линии с отметкой «да».
4. Следующий этап является заключительным, то есть происходит вычисление результата работы алгоритма. По итогу всех вышеописанных действий мы получаем окончательный ответ, не требующий дополнительных вычислений: X := 0, Y := 1.
Решение алгоритма сортировки пузырьком
В этом примере давайте попробуем дать описание решению алгоритма сортировки по методу пузырьком (метод сортировки вставками). Здесь применяются 2 цикла. Во вложенном цикле осуществляется попарное сравнение элементов. Если нарушается порядок, происходит перестановка. По итогу выполнения одной итерации во внутреннем цикле, наибольший элемент будет смещён в самый конец массива. Внешний цикл будет выполняться, пока полностью весь массив не отсортируется.
На схеме отображено применение символов конца и начала цикла. Здесь условие внешнего цикла (А) проверяется в конце (с постусловием), а функционирует он до тех пор, пока переменная hasSwapped является true. Во внутреннем цикле используется предусловие для перебора пар элементов, которые сравниваются. Если они располагаются в неправильном порядке, они переставляются путём вызова внешней процедуры (swap). Для понимания назначения внешней процедуры, как и порядка следования аргументов этой процедуры, нужно оставлять комментарии. Если функция возвращает значение, то комментарий можно написать к символу-терминатору конца.
В этой статье мы постарались дать ответ, зачем нужны блок-схемы, каковы их основные элементы, как с их помощью решить алгоритмическую задачу. При подготовке материала использовались следующие источники:
• https://uchitel.pro/алгоритм-свойства-алгоритмов/;
• https://pro-prof.com/archives/1462.
Время выполнения6 часов Цель работыУсвоить понятия: алгоритм как фундаментальное понятие информатики, способы описания, основные типы алгоритмов, освоить принципы решения задач с использованием основных алгоритмических конструкций. Задачи лабораторной работыПосле выполнения работы студент должен знать и уметь:
Перечень обеспечивающих средствДля обеспечения выполнения работы необходимо иметь методические указания по выполнению работы. Общие теоретические сведенияРешение любой задачи на ЭВМ можно разбить на следующие этапы: разработка алгоритма решения задачи, составление программы решения задачи на алгоритмическом языке, ввод программы в ЭВМ, отладка программы (исправление ошибок), выполнение программы на ПК, анализ полученных результатов. Первый этап решения задачи состоит в разработке алгоритма. Алгоритм – это точная конечная система правил, определяющая содержание и порядок действий исполнителя над некоторыми объектами (исходными и промежуточными данными) для получения после конечного числа шагов искомого результата. Алгоритм может быть описан одним из трех способов:
Блок-схема – распространенный тип схем, описывающий алгоритмы или процессы, изображая шаги в виде блоков различной формы, соединенных между собой стрелками.
Циклом называют повторение одних и тех же действий (шагов). Последовательность действий, которые повторяются в цикле, называют телом цикла. Циклические алгоритмы подразделяют на алгоритмы с предусловием, постусловием и алгоритмы с конечным числом повторов. В алгоритмах с предусловием сначала выполняется проверка условия окончания цикла и затем, в зависимости от результата проверки, выполняется (или не выполняется) так называемое тело цикла. Задание 1. Определить площадь трапеции по введенным значениям оснований (a и b) и высоты (h). Запись решения задачи на алгоритмическом языке: нач s:=((a+b)/2)*h кон Запись алгоритма в виде блок-схемы (рис. 1): Рисунок 1. Блок-схема линейного алгоритма Задание 2. Определить среднее арифметическое двух чисел, если a положительное и частное (a/b) в противном случае. Запись решения задачи на алгоритмическом языке: нач кон Запись алгоритма в виде блок-схемы (рис. 2): Рисунок 2. Блок-схема алгоритма с ветвлением Задание 3. Составить алгоритм нахождения суммы целых чисел в диапазоне от 1 до 10. Запись решения задачи на алгоритмическом языке: нач S:=0; A:=1; S:=S+a; A:=a+1; кон Запись алгоритма в виде блок-схемы (рис. 3): Рисунок 3. Циклический алгоритм с предусловием В алгоритме с постусловием сначала выполняется тело цикла, а затем проверяется условие окончания цикла. Решение задачи нахождения суммы первых десяти целых чисел в данном случае будет выглядеть следующим образом: нач S:=0; A:=1; S:=S+a; A:=a+1; кон Запись алгоритма в виде блок-схемы (рис. 4): Рисунок 4. Циклический алгоритм с постусловием Варианты заданияТехнология выполнения работы В рамках выполнения работы необходимо составить алгоритм решения задачи в виде блок-схемы и с помощью языка псевдокода. Содержание отчета
Вопросы для защиты работы
|