Задачи на массивы егэ информатика

Версия для печати и копирования в 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 различных делителя.
    Выведите эти четыре делителя для каждого найденного числа в порядке возрастания.

    ✍ Решение:

      ✎ Решение (неоптимизированный вариант, метод полного перебора):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      
      begin
        var divCount := 4;
        for var n := 126849 to 126871 do
        begin
          var divs := new List<integer>; 
          for var d := 1 to n do
            if n mod d = 0 then begin
              divs.Add(d);      
              if divs.Count > divCount then break;
            end;
          if divs.Count = divCount then
          begin
            divs.Sort();
            Println(divs);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      
      for n in range(126849,126871+1):
            divs = [] # чистим список делителей
            for d in range(1,n+1): #
              if n % d == 0:
                divs = divs + [d] # добавляем делитель в список
                if len(divs) > 4: break
            if len(divs) == 4:
              print(*divs)
      С++:

      ✎ Решение (оптимизированный вариант):

    • Будем использовать оптимизированный вариант программы, подходящий для «медленных» компьютеров. Для этого перебор делителей для числа n будем выполнять от 2 до √n, округлив его до ближайшего целого числа (не включая точный квадратный корень, если он существует):
    • вместо диапазона делителей [1; число]
      использовать диапазон [1; округл(√n)]
      
    • При переборе делителей будем определять: если делитель – это точный квадратный корень(n), то в список делителей добавлять будем только сам делитель, если нет – то добавляем пару делителей (делитель и n // делитель):
    • Пример:
      число 8 = 2 * 4
      Достаточно рассмотреть цикл от 2 до округл(√8) (=2)
      если 8 делится на 2 и 8/2 не равно 2, то делители: 2 и 4 (8/2)
      
      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      
      begin
        var divCount := 4;
        for var n := 126849 to 126871 do
        begin
          var divs := new List<integer>;
          var d := 1;
          while d * d <= n do  // можно цикл for var d := 1 to round(sqrt(n)) do
          begin
            if n mod d = 0 then begin
              divs.Add(d);      
              if d * d <> n then 
                divs.Add(n div d);
              if divs.Count > divCount then break;
            end;
            d := d+1;
          end;
          if divs.Count = divCount then
          begin
            divs.Sort();
            Println(divs);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      
      # import math # для квадратного корня числа (sqrt)
      divCount = 4  # нужное количество делителей
      for n in range(126849,126871 + 1):
        divs = [] # чистим список делителей
        d = 1
        #  вместо while можно цикл for d in range(1,round(math.sqrt(n))):
        while d*d <= n: # перебор делителей
          if n % d == 0:
            divs.append(d) # добавляем делитель в список
            if d != n//d: # если делитель - не точный квадратный корень n
              divs.append(n//d)
            if len(divs) > divCount: break
          d+=1
        if len(divs) == divCount:
          divs.sort()
          print(divs)
      С++:

      ✎ Решение: Генерация списка делителей.
      Общая идея:

    • Для каждого числа указанного диапазона генерируем список делителей.
    • Если длина списка равна четырем, выводим его.
    • 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:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      
      begin
        var divCount := 6;
        for var n := 164700 to 164752 do
        begin
          var divs := new List<integer>; 
          for var d := 1 to round(sqrt(n)) do
            if n mod d = 0 then begin
              divs.Add(d);      
              if d * d <> n then 
                divs.Add(n div d);
              if divs.Count > divCount then break;
            end;
          if divs.Count = divCount then
          begin
            divs.Sort();
            Println(divs);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      import math # для квадратного корня sqrt
      divCount = 6  # нужное количество делителей
      for n in range(164700, 164752 + 1):
        divs = [] # чистим список делителей
        for d in range(1,round(math.sqrt(n))): # перебор делителей
          if n % d == 0:
            divs.append(d) # добавляем делитель в список
            if d != n//d:
              divs.append(n//d)
            if len(divs) > divCount: break
        if len(divs) == divCount:
          divs.sort()
          print(divs)
      С++:

      ✎ Решение: Генерация списка делителей.
      Общая идея:

    • Для каждого числа указанного диапазона генерируем список делителей.
    • Если длина списка равна четырем, выводим его.
    • 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:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      begin
        var divs := new integer[4];
        for var n := 190201 to 190230 do
        begin
          var i := 0; // для индекса массива
          for var d := 1 to n do
          begin
            if n mod d = 0 then 
            begin
              if i < 4 then
                divs[i] := d;
              inc(i);
            end;
            if i > 4 then 
              break; 
          end;
          if i = 4 then begin
            println(divs.Reverse())
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      for n in range(190201,190230+1):
            divs = [] # чистим список делителей
            for d in range(1,n+1): #
              if n % d == 0:
                divs = divs + [d] # добавляем делитель в список
                if len(divs) > 4: break
            if len(divs) == 4:
              divs.reverse()
              print(*divs)
      С++:

      ✎ Решение (оптимизированный вариант):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      
      begin
        var divCount := 4;
        for var n := 190201 to 190230 do
        begin
          var divs := new List<integer>; 
          for var d := 1 to round(sqrt(n)) do
            if n mod d = 0 then begin
              divs.Add(d);      
              if d * d <> n then 
                divs.Add(n div d);
              if divs.Count > divCount then break;
            end;
          if divs.Count = divCount then
          begin
            divs.Sort();
            divs.Reverse();
            Println(divs);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      
      import math # для квадратного корня sqrt
      divCount = 4  # нужное количество делителей
      for n in range(190201, 190230 + 1):
        divs = [] # чистим список делителей
        for d in range(1,round(math.sqrt(n))): # перебор делителей
          if n % d == 0:
            divs.append(d) # добавляем делитель в список
            if d != n//d:
              divs.append(n//d)
            if len(divs) > divCount: break
        if len(divs) == divCount:
          divs.sort()
          divs.reverse()
          print(divs)
      С++:

      ✎ Решение: Генерация списка делителей.
      Общая идея:

    • Для каждого числа указанного диапазона генерируем список делителей.
    • Если длина списка равна четырем, выводим его.
    • 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:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      begin
        var divs := new integer[4];
        for var n := 190201 to 190280 do
        begin
          var i := 0; // для индекса массива
          for var d := 1 to n do
          begin
            if (n mod d = 0) and (d mod 2 = 0) then 
            begin
              if i < 4 then
                divs[i] := d;
              inc(i);
            end;
            if i > 4 then 
              break; 
          end;
          if i = 4 then begin
            println(divs.Reverse())
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      for n in range(190201,190280+1):
            divs = [] # чистим список делителей
            for d in range(1,n+1): #
              if n % d == 0 and d%2==0:
                divs = divs + [d] # добавляем делитель в список
                if len(divs) > 4: break
            if len(divs) == 4:
              divs.reverse()
              print(*divs)
      С++:

      ✎ Решение: Генерация списка делителей.

      Общая идея:

    • Для каждого числа указанного диапазона генерируем список делителей.
    • Если длина списка равна четырем, выводим его.
    • 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:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      begin
        var max := 0;
        var divsMax := new List<integer>; 
        for var n := 394441 to 394505 do
        begin
          var divs := new List<integer>; 
          for var d := 1 to n do
            if n mod d = 0 then 
              divs.Add(d);      
          if divs.Count > max then 
          begin
            max := divs.Count;
            divsMax := divs;
          end;
        end;
        divsMax.Reverse();
        print(max, divsMax[0], divsMax[1])
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      
      maxim = 0  # нужное количество делителей
      divsMax = []
      for n in range(394441, 394505 + 1):
        divs = [] # чистим список делителей
        for d in range(1,n+1): # перебор делителей
          if n % d == 0:
            divs.append(d) # добавляем делитель в список
        if len(divs) > maxim: 
          maxim = len(divs)
          divsMax = divs
      divsMax.reverse()
      print(maxim,divsMax[0],divsMax[1])
      С++:

      ✎ Решение (Генерация списка делителей):

      PascalABC.net:

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      maxim=0
      divsmax=[]
      for n in range(394441, 394505+1):
          divs = [d for d in range(1, n+1) if n % d == 0] 
          if len(divs) > maxim:
              maxim = len(divs)
              divsmax = divs # сохраняем делители для числа с макс кол-вом дел-ей
      divsmax.reverse()
      print(maxim, divsmax[0], divsmax[1])
      С++:

    Ответ: 48 394450 197225

    Видео

    Простые числа

    25_12:

    Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [3532000; 3532160], простые числа.
    Выведите все найденные простые числа в порядке убывания, слева от каждого числа выведите его номер по порядку.

    ✍ Решение:

      ✎ Решение (неоптимизированный вариант, метод полного перебора):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      
      begin
        var count := 0;
        for var n := 3532160 downto 3532000 do // цикл с конца 
        begin
          var flag := true; 
          for var d := 2 to n - 1 do // перебор делителей, начиная с двух до n-1
          begin
            if n mod d = 0 then begin // есть делитель помимо единицы и самого n
              flag := false; // число не простое     
              break;
            end;
          end;
          if flag = true then // если число простое
          begin
            inc(count);
            Println(count, n);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      
      count = 0
      for n in range(3532160, 3532000-1, -1): # цикл с конца и с шагом (-1) 
        flag = True
        for d in range(2, n): # перебор делителей, начиная с двух
          if n % d == 0: # есть делитель помимо единицы и самого n
            flag = False # число не простое
            break
        if flag == True: # число простое
          count+=1
          print(count , n)
      С++:

      ✎ Решение (оптимизированный вариант):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      begin
        var count := 0;
        for var n := 3532160 downto 3532000 do // цикл с конца 
        begin
          var flag := true; 
          var d := 2;
          while d * d <= n - 1 do // перебор делителей, начиная с двух
          begin
            if n mod d = 0 then begin // есть делитель помимо единицы и самого n
              flag := false;  // число не простое    
              break;
            end;
            d := d + 1;
          end;
          if flag = true then // если число простое
          begin
            inc(count);
            Println(count, n);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      
      count = 0
      for n in range(3532160, 3532000-1, -1): # цикл с конца и с шагом (-1) 
            flag = True
            d = 2
            while d*d <= n-1: # перебор делителей, начиная с двух
                  if n % d == 0: # есть делитель помимо единицы и самого n
                        flag = False # число не простое
                        break
                  d+=1
            if flag == True: # число простое
                  count+=1
                  print(count , n)
      С++:

    Ответ:

    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:
    • for j:=1 to N do
        if a[j] mod 3 <> 0 then
    • если условие истинно (т.е. нашелся элемент массива, не кратный трем), то увеличиваем счетчик:
    • после цикла остается вывести значение счетчика, т.е. вывести количество элементов массива не кратных 3:

    Результат:

    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, она отвечает за размер массива.
    • При решении такого рода задач, необходимо помнить, что массив в Python — это список и это динамический тип данных. Кроме того, нумерация элементов массива начинается с 0.

    • Ниже мы видим инициализацию списка а. Мы должны дописать код дальнейшей программы, который последует после заполнения списка пользователем.
    • Итак, по условию мы должны находить пары элементов, сумма которых делится на 2, но не делится на 4, причем парами считаются соседние элементы, например: a[0] и a[1], a[1] и a[2].
    • Мы можем узнать, делится ли данный элемент на число, если остаток от деления на него равен 0, и не делится — в противном случае. Тогда сумма соседних элементов при делении на 2 должна давать остаток 0, а при делении на 4 наоборот — отличный от 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, чтобы не выйти за границы диапазона массива.

    • Когда мы определились с условием, за счетчик возьмем переменную k, которую допустимо брать исходя из комментариев к программе.
    • ...
       if j%2 == 0 and j%4 != 0:
              k+=1
    • Мы добавили допустимую переменную j, чтобы условный оператор выглядел компактнее.
    • Однако задача еще не решена. Во-первых, мы должны до цикла инициализировать счетчик k = 0. Так как иначе Python выдаст ошибку.
    • Дело в том, что мы пытаемся присвоить переменной 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;
    • счетчик всегда нужно сначала обнулять, поэтому следующим оператором будет:
    • определим, количество чего нам необходимо считать: количество троек элементов массива, состоящих из равных между собой чисел. Т.е. необходимо сравнивать между собой каждые три подряд идущих элемента массива, например так:
    • if (a[i]=a[i+1]) and (a[i]=a[i+2]) then
          inc(k);
    • inc(k) — оператор, увеличивающий счетчик k на единицу;
    • условие необходимо выполнять в цикле, так как нужно проверить все элементы массива; цикл со счетчиком необходимо организовать от 1 до N-2, в противном случае индексы элементов a[i+2] выйдут за границы диапазона массива (например, при i = 40, получим … a[40+2], а 42-го элемента массива не существует, поэтому цикл надо делать до i = 38, т.е. N-2).

    Результат:

    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 здесь


    Задачи на поиск максимума, минимума элементов массива и другие

    Сегодня будем тренироваться решать 19 задание из ЕГЭ по информатике.

    В девятнадцатом задании ЕГЭ по информатике обычно даются задачи, в которых есть программный код на пяти языках программирования, и нужно показать умение работать с массивами.

    Но зачем вообще нужны массивы в программировании ? Давайте об этом немного поговорим!

    Зачем нужны массивы ?

    Все примеры буду рассматривать на языке программирования Паскаль, который популярен на уроках информатики.

    Пусть у нас есть пять переменных, и их первоначальные значения нужно увеличить в два раза. Тогда без массива код будет выглядеть следующим образом:

    var x, y, z, m, n: integer;
    begin
    
    // Первоначальные значения
    x := 2;
    y := 3;
    z := 1;
    m := 6;
    n := 8;
    
    //Удваиваем значения
    x := 2 * x;
    y := 2 * y;
    z := 2 * z;
    m := 2 * m;
    n := 2 * n;
    

    Видим, что приходится каждую переменную умножать отдельно.

    Теперь тоже самое сделаем с помощью массива.

    const n = 5; {Заводим константу, это будет длина массива}
    var i :integer; {Заводим переменную для ЦИКЛА}
    A:array[1..n] of integer; {Заводим массив}
    begin
    
    // Первоначальные значения
    A[1] := 2;
    A[2] := 3;
    A[3] := 1;
    A[4] := 6;
    A[5] := 8;
    
    //Удваиваем значения
    for i:=1 to n do
      A[i] := 2 * A[i];
    

    Обратите внимание, что удвоение во втором случае идёт с помощью двух строчек, когда в первом случае, удвоение получается с помощью пяти строчек. Если бы переменных было 1000, то выигрыш в объёме кода, был бы ещё большим.

    Схематично наш массив можно представить так:

    ЕГЭ по информатике - задание 19 (Массив)

    Это те же 5 переменных, но они объединены общем именем A. К каждому элементу массива можно обратится по индексу A[1], A[2] и т.д.

    Здесь мы задали нумерацию элементов массива от 1 до 5. В паскале можно задать нумерацию элементов массива и от нуля. Например A:array[0..24] of integer;

    Удобство использования массива заключается в том, что его элементы можно перебирать и обрабатывать с помощью ЦИКЛОВ! Значит, обычно массив и цикл работают в связке.

    Не терпится уже разобрать первый пример из предположительных задач ЕГЭ по информатике.

    Примеры решения задач 19 задания из ЕГЭ по информатике

    Задача (стандартная)

    В программе используются целочисленный массив A с индексами от 0 до 9. Значения элементов массива равны 4; 5; 4; 7; 6; 3; 9; 11; 7; 8 соответственно, т.е. A[0] = 4; A[1] = 5 и т.д.

    Определите значение переменной k после выполнения следующего фрагмента программы, записанной ниже на разных языках программирования.

    Бейсик Python
    k=0
    FOR i=0 TO 8
        IF A(i) > A(i+1) THEN
            k = k + 1
            t = A(i)
            A(i) = A(i+1)
            A(i+1) = t
        END IF
    NEXT i
    
    k = 0
    for i in range(9):
        if A[i] > A[i+1]:
            k = k + 1
            t = A[i]
            A[i] = A[i+1]
            A[i+1] = t
    
    Паскаль Алгоритмический язык
    k := 0;
    for i := 0 to 8 do
        if A[i] > A[i+1] then
        begin
          k := k + 1;
          t := A[i];
          A[i] := A[i + 1];
          A[i + 1] := t
        end;
    
    k := 0
    нц для i от 0 до 8
        если A[i] > A[i + 1] то
            k := k + 1
            t := A[i]
            A[i] := A[i + 1]
            A[i+1] := t
         все
    кц
    
    Си++
    k = 0;
    for (i = 0; i <= 8; i++)
        if (A[i] > A[i + 1]) {
            k = k + 1
            t = A[i];
            A[i] = A[i + 1];
            A[i + 1] = t;    
        }
    

    Решение:

    Рассмотрим программу на языке Паскаль.

    В начале переменная k = 0.

    Затем начинается ЦИКЛ. Цикл будет выполнятся, пока переменная i «бежит» от 0 до 8.

    При первом проходе ЦИКЛА i = 0, при втором i = 1 и т.д.

    Внутри цикла проверяется условие (A[i] > A[i+1]). Если условие ВЕРНО, то программа прибавляет к переменной k единицу, и плюс, меняет значения ячеек массива A[i] и A[i+1] с помощью дополнительной переменной t.

    ЕГЭ по информатике - задание 19 (Массивы, разбор программы)

    Про замену значений двух переменных у меня на сайте написана целая статья!

    Чтобы понять, чему равна переменная k после окончания программы, нужно понять, сколько раз будет верно условие внутри цикла.

    Сам массив нам дан! (4; 5; 4; 7; 6; 3; 9; 11; 7; 8).

    ЕГЭ по информатике - задание 19 (Массивы, решение задачи)

    На рисунке показана каждая итерация ЦИКЛА при всех значениях переменной i. Зелёной галочкой отмечены те итерации, где сработает условие, и, значит, переменная k будет увеличена на 1.

    Важно: После первого срабатывания условия, программа меняет значения элементов A[1] и A[2]. И наш массив принимает следующий вид: 4; 4; 5; 7; 6; 3; 9; 11; 7; 8. И при следующем проходе A[2] снова принимает значение «5», а не «4»! И так во всех случаях, когда условие срабатывает!

    Таким образом, значение k после выполнения программы равна 5.

    Ответ: 5

    Продолжаем подготовку к 19 заданию из ЕГЭ по информатике.

    Задача (ЕГЭ по информатике, 2019, Москва)

    Представленный ниже фрагмент программы обрабатывает элементы одномерного массива A с индексами от 0 до 9. Перед началом выполнения данного фрагмента эти элементы массива имели значения 2, 3, 5, 6, 10, 4, 8, 6, 12, 9 (т.е. A[0] = 2, A[1] = 3, … , A[9] = 9).

    Определите значение переменной s после выполнения фрагмента этой программы (записанной ниже на разных языках программирования)

    Бейсик Python
    n = 6
    s = 0
    FOR i = 0 TO 9
        IF A(i) > A(n) THEN
            s = s + (A(i) MOD A(n))
            t = A(i)
            A(i) = A(n)
            A(n) = t
        END IF
    NEXT i
    
    n = 6
    s = 0
    for i in range(0, 10):
        if A[i] > A[n]:
            s += A[i] % A[n]
            t = A[i]
            A[i] = A[n]
            A[n] = t
    
    Паскаль C++
    n := 6
    s := 0
    for i:=0 to 9 do begin
        if A[i] > A[n] then
        begin
            s := s + (A[i] mod A[n]);
            t := A[i];
            A[i] := A[n];
            A[n] := t;
        end
    end;    
    
    n = 6;
    s = 0;
    for(i = 1; i <= 9; ++i) {
        if (A[i] > A[n]) {
            s += A[i] % A[n];
            t = A[i];
            A[i] = A[n];       
            A[n] = t;
        }
    }
    

    Решение:

    В начале задаются начальные значения для переменных s и n. Если посмотреть дальше глазами, то видим, что переменная n участвует для указания индекса элемента массива, переменная s — это результат суммы некоторых вычислений.

    В ЦИКЛЕ i проходит каждое значение от 0 до 9. В теле Цикла только условие! А в условии проверяется: будет ли элемент массива A с индексом i больше, чем A[n].

    В первый раз n=6 (A[6] = 8). Напоминаю, что в этой задаче номера индексов массива начинаются с нуля! Но если условие «сработает», то A[n] поменяется.

    Если условие выполнится, то значение A[n] станет равно A[i]. Опять присутствует блок, где элементы массива A[n] и A[i] меняются значениями (Найдите этот кусок кода сами!). И, соответственно, сравнивать в условии будем тоже с новым значением.

    Так же, если условие выполнится, то мы к тому, что было к переменной s прибавим значение A[i] mod A[n] (mod — это операция, которая показывает остаток от деления).

    Причем, сначала происходит суммирование для переменной s, а потом уже замена значения для A[n].

    i A[i] A[n] A[i] > A[n] A[i] mod A[n] s
    0 2 8 2 > 8 0
    1 3 8 3 > 8 0
    2 5 8 5 > 8 0
    3 6 8 6 > 8 0
    4 10 8 10 > 8 2 2
    5 4 10 4 > 10 2
    6 10 10 10 > 10 2
    7 6 10 6 > 10 2
    8 12 10 12 > 10 2 4
    9 9 12 9 > 12 4

    Таким образом, по окончании данного фрагмента программы, получится в переменной s значение 4.

    Ответ: 4

    Ещё один пример 19 задания из реального экзамена, который был в 2020 году в Москве!

    Задача (ЕГЭ по информатике, 2020, Москва)

    Представленный ниже фрагмент программы обрабатывает элементы одномерного целочисленного массива A c индексами от 0 до 11. Перед началом выполнения данного фрагмента эти элементы массива имели значения согласно таблице:

    0 1 2 3 4 5 6 7 8 9 10 11
    5 43 20 7 13 7 20 13 2 33 15 5

    Определите значение переменной s после выполнения фрагмента этой программы (записанного ниже на разных языках программирования).

    Бейсик Python
    s = 0
    FOR i = 1 TO 11
        IF A(i-1) DIV A(i) < 2 THEN
            s = s + A(i)
        ELSE
            A(i) = A(i) * i
        END IF
    NEXT i
    
    s = 0
    for i in range(1, 12):
        if A[i-1] // A[i] < 2:
            s += A[i]
        else:
            a[i] = a[i] * i
    
    Паскаль C++
    s := 0;
    for i:=1 to 11 do begin
        if A[i-1] div A[i] < 2 then
        begin
            s := s + A[i]
        else
            A[i] := A[i] * i;
        end
    end;    
    
    s = 0;
    for (i = 1; i < 12; ++i ) {
        if (A[i-1] // A[i] < 2) {
            s += A[i]
        }
        else {
            A[i] = A[i] * i
        }
    }
    

    Решение:

    Цикл «пробегает» весь массив. Здесь переменная i начинает идти с 1, потому что мы внутри тела цикла обращаемся к элементу с индексом i-1. Если бы i пошла с нуля, то получилось бы, что программа обратилась к элементу с индексом -1, и была бы ошибка.

    Внутри ЦИКЛА находится одно условие. В условии сразу проверяется меньше ли двух результат от целочисленного деления A[i-1] на A[i] (div — это целочисленное деление, т.е. обычное деление, но дробная часть отбрасывается). Если условие выполнится, то программа к переменной s прибавит элемент A[i]. Если условие не будет выполнено, то элемент A[i] будет умножен на i, и это повлияет на следующую итерацию, ведь массив то изменится.

    i A[i-1] A[i] A[i-1] div A[i] < 2 s A[i] (в конце итерации)
    1 5 43 0 < 2 43 43 (в конце итерации)
    2 43 20 2 < 2 43 40 (в конце итерации)
    3 40 7 5 < 2 43 21 (в конце итерации)
    4 21 13 1 < 2 56 13 (в конце итерации)
    5 13 7 1 < 2 63 7 (в конце итерации)
    6 7 29 0 < 2 92 29 (в конце итерации)
    7 29 13 2 < 2 92 91 (в конце итерации)
    8 91 2 45 < 2 92 16 (в конце итерации)
    9 16 33 0 < 2 125 33 (в конце итерации)
    10 33 15 2 < 2 125 150 (в конце итерации)
    11 150 5 30 < 2 125 55 (в конце итерации)

    Ответ: 125

    На этом всё! Счастливого ЕГЭ по информатике!

    За это задание ты можешь получить 1 балл. На решение дается около 30 минут. Уровень сложности: высокий.
    Средний процент выполнения: 40.2%
    Ответом к заданию 25 по информатике может быть развернутый ответ (полная запись решения с обоснованием выполненных действий).

    Задача 1

    Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:

    — символ «?» означает ровно одну произвольную цифру;

    — символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательноcть.

    Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске 352*6?5*, являющиеся полными квадратами.

    В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им квадратные корни.

    Решение
    for num in range(1, 1000000):
        num = str(num)
        fl = False
        for i in range(len(num)-2):
            if num[i] == '6' and num[i+2] == '5':
                fl = True
        if fl:
            num = int('352'+num)
            if int(num ** 0.5) ** 2 == num:
                print(num, num ** 0.5)
    

    Или можно другое решение, на основе срезов:

    for i in range(352605, 10 ** 9):
        if round(i ** 0.5) ** 2 == i:
            s = str(i)
            if s[:3] == '352' and '6' in s[3:-2] and '5' in s[4:] and s.index('6') + 2 == s.rindex('5'):
                print(i, round(i ** 0.5))
    

    Хотите самое быстрое решение? Вы замечали, что все соседние полные квадраты отличаются друг от друга на нечётное число, при этом это строго возрастающая последовательность нечётных числе. Например, нам даны полные квадраты 1, 4, 9, 16, 25, 36, 49. Разность между ними будет: 3, 5, 7, 9, 11, 13. Правда интересная закономерность? На её основе можно сделать решение:

    from fnmatch import fnmatch
    
    z = 1189
    i = 352836
    while i <= 10 ** 9:
        if fnmatch(str(i), '352*6?5*'):
            print(i, i ** 0.5)
        i += z
        z += 2
    

    Ответ:

    352500625 18775

    352763524 18782

    Ответ:

    Задача 2

    Назовём маской числа последовательность состоящую из цифр и символ «*» и «?»:
    — символ «?» означает ровно одну пропущенную цифру;
    — символ «*» означает любую последовательность цифр, включая пустую.

    Среди натуральных чисел, больших 106, найдите пять чисел, соответствующие маске 123*4?*9 и делящиеся на 13 без остатка. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им частные от деления на 13.

    Решение

    Запишем решение на языке Python:

    k = 0
    number = 10 ** 6 + 1
    while k < 5:
        s =str(number)
        if s[:3] == '123' and s[-1] == '9' and '4' in s[3:-2] and number % 13 == 0:
            k += 1
            print(number, number // 13)
        number += 1
    

    1230489 94653
    1232439 94803
    1233479 94883
    1234129 94933
    1234259 94943

    Ответ:

    Задача 3

    Дан числовой отрезок натуральных чисел: [47584, 47684]. Напишите программу, которая ищет на данном отрезке числа, являющиеся простыми. Простое число — число, которое делится только на единицу и само число.

    Для каждого найденного числа запишите через пробел порядковый номер и само число. Каждая следующая найденная пара пишется с новой строки в порядке возрастания простого числа. Например, если подошло два числа: 7 и 13, необходимо записать в ответ:

    1 7

    2 13

    В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

    Решение

    Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

    def check_del(x):

    max_del = 0

    count = 0

    for i in range(2, x//2+1):

    if x % i == 0:

    count += 1

    max_del = i

    if count == 2:

    return max_del

    else:

    return -1

    for x in range(47584, 47684 + 1):

    num = check_del(x)

    if num != -1:

    print(x, num)

    Ответ:

    1 47591

    2 47599

    3 47609

    4 47623

    5 47629

    6 47639

    7 47653

    8 47657

    9 47659

    10 47681

    Ответ:

    Задача 4

    Дан числовой отрезок натуральных чисел: [10000, 14000]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно два чётных делителя, не считая самого числа.

    Для каждого найденного числа запишите через пробел само число и наибольший чётный делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

    10 5

    21 7

    В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

    Решение

    Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

    def check_del(x):

    max_del = 0

    count = 0

    for i in range(2, x//2+1, 2):

    if x % i == 0:

    count += 1

    max_del = i

    if count > 2:

    return -1

    if count == 2:

    return max_del

    else:

    return -1

    for x in range(10000, 14000 + 1):

    num = check_del(x)

    if num != -1:

    print(x, num)

    Ответ:

    10082 142

    10658 146

    12482 158

    13778 166

    Ответ:

    Задача 5

    Дан числовой отрезок натуральных чисел: [1574, 1600]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно шесть делителей, не считая единицы и самого числа.

    Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

    10 5

    21 7

    В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

    Решение

    Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

    def check_del(x):

    max_del = 0

    count = 0

    for i in range(2, x//2+1):

    if x % i == 0:

    count += 1

    max_del = i

    if count > 6:

    return -1

    if count == 6:

    return max_del

    else:

    return -1

    for x in range(1574, 1600 + 1):

    num = check_del(x)

    if num != -1:

    print(x, num)

    Решение на C++:

    int check(int val){
    int count = 0, max = 0;
    for (int i = 2; i <= val / 2; ++i)
    if (val % i == 0){
    count++;
    max = i; // последний делитель - наибольший
    }
    if (count == 6)
    return max;
    return - 1;
    }

    int main(){
    for (int i = 1574; i < 1601; ++i){
    int rez = check(i);
    if (rez != -1)
    cout << i << " " << rez << endl;
    }
    return 0;
    }

    Ответ:

    1576 788

    1578 789

    1581 527

    1582 791

    1586 793

    1592 796

    1593 531

    1595 319

    1598 799

    1599 533

    Ответ:

    Задача 6

    Дан числовой отрезок натуральных чисел: [124503, 124563]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно шесть делителей, не считая единицы и самого числа.

    Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

    10 5

    21 7

    В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

    Решение

    Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

    def check_del(x):

    max_del = 0

    count = 0

    for i in range(2, x//2+1):

    if x % i == 0:

    count += 1

    max_del = i

    if count > 6:

    return -1

    if count == 6:

    return max_del

    else:

    return -1

    for x in range(124503, 124563 + 1):

    num = check_del(x)

    if num != -1:

    print(x, num)

    Решение на C++:

    int check(int val){
    int count = 0, max = 0;
    for (int i = 2; i <= val / 2; ++i)
    if (val % i == 0){
    count++;
    max = i; // последний делитель - наибольший
    }
    if (count == 6)
    return max;
    return - 1;
    }

    int main(){
    for (int i = 192; i <= 237; ++i){
    int rez = check(i);
    if (rez != -1)
    cout << i << " " << rez << endl;
    }
    return 0;
    }

    Ответ:

    124503 41501

    124505 24901

    124510 62255

    124514 62257

    124518 62259

    124522 62261

    124534 62267

    124538 62269

    124552 62276

    124554 62277

    124555 24911

    124562 62281

    Ответ:

    Задача 7

    Дан числовой отрезок натуральных чисел: [48724, 48768]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно четыре делителя, не считая единицы и самого числа.

    Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

    10 5

    21 7

    В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

    Решение

    Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

    def check_del(x):

    max_del = 0

    count = 0

    for i in range(2, x//2+1):

    if x % i == 0:

    count += 1

    max_del = i

    if count > 4:

    return -1

    if count == 4:

    return max_del

    else:

    return -1

    for x in range(48724, 48768 + 1):

    num = check_del(x)

    if num != -1:

    print(x, num)

    Ответ:

    48725 9745

    48749 1681

    48753 16251

    Ответ:

    Задача 8

    Дан числовой отрезок натуральных чисел: [14587, 20598]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно три делителя, не считая единицы и самого числа.

    Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

    10 5

    21 7

    В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

    Решение

    Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

    def check_del(x):

    max_del = 0

    count = 0

    for i in range(2, x//2+1):

    if x % i == 0:

    count += 1

    max_del = i

    if count == 3:

    return max_del

    else:

    return -1

    for x in range(14587, 20598 + 1):

    num = check_del(x)

    if num != -1:

    print(x, num)

    Ответ:

    14641 1331

    Ответ:

    Задача 9

    Дан числовой отрезок натуральных чисел: [214, 8475]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно три делителя, не считая единицы и самого числа.

    Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

    10 5

    21 7

    В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

    Решение

    Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

    def check_del(x):

    max_del = 0

    count = 0

    for i in range(2, x//2+1):

    if x % i == 0:

    count += 1

    max_del = i

    if count == 3:

    return max_del

    else:

    return -1

    for x in range(214, 8475 + 1):

    num = check_del(x)

    if num != -1:

    print(x, num)

    Ответ:

    625 125

    2401 343

    Ответ:

    Задача 10

    Дан числовой отрезок натуральных чисел: [25, 8700]. Напишите программу, которая ищет на данном отрезке числа, у которых сумма делителей (кроме самого числа) равна самому числу.

    Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 6 и 24, необходимо записать в ответ:

    6 3

    24 12

    В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

    Решение

    Решение на Python:

    def check_del(x):
    s = 0
    max_del = 0
    for i in range(1, x//2+1):
    if x % i == 0:
    s += i
    max_del = i
    if s == x:
    return max_del
    else:
    return -1
    for x in range(25, 8500 + 1):
    num = check_del(x)
    if num != -1:
    print(x, num)

    Решение на C++:

    int check(int val){
    int sum = 0, max = 0;
    for (int i = 1; i <= val / 2; ++i)
    if (val % i == 0) {
    sum += i;
    if (i > max) max = i;
    }
    if (sum == val)
    return max;
    else
    return -1;
    }
    int main() {
    for (int i = 28; i < 8701; ++i) {
    int rez = check(i);
    if (rez != -1)
    cout << i << " " << rez << endl;
    }
    return 0;
    }

    Ответы:
    28 14
    496 248
    8128 4064

    Ответ:

    Задача 11

    Дан числовой отрезок натуральных чисел: [178247500, 178543044]. Напишите программу, которая ищет на данном отрезке числа, являющиеся квадратами натуральных чисел.

    Для каждого найденного числа запишите через пробел само число и квадратом какого числа оно является. Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 16 и 25, необходимо записать в ответ:

    16 4

    25 5

    В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

    Решение

    Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

    def square(x):

    num = int(x ** 0.5)

    if num**2 == x:

    return num

    else:

    return -1

    for x in range(178247500, 178543044 + 1):

    num = square(x)

    if num != -1:

    print(x, num)

    Ответ:

    178249201 13351

    178275904 13352

    178302609 13353

    178329316 13354

    178356025 13355

    178382736 13356

    178409449 13357

    178436164 13358

    178462881 13359

    178489600 13360

    178516321 13361

    178543044 13362

    Ответ:

    Задача 12

    Дан числовой отрезок натуральных чисел: [2147850, 2478350]. Напишите программу, которая ищет на данном отрезке числа, являющиеся кубами натуральных чисел.

    Для каждого найденного числа запишите через пробел само число и кубом какого числа оно является. Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 27 и 8, необходимо записать в ответ:

    8 2

    27 3

    В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

    Решение

    Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

    def cube(x):

    num = 1

    while num**3 < x:

    num += 1

    if num**3 == x:

    return num

    else:

    return -1

    for x in range(2147850, 2478350 + 1):

    num = cube(x)

    if num != -1:

    print(x, num)

    Ответ:

    2197000 130

    2248091 131

    2299968 132

    2352637 133

    2406104 134

    2460375 135

    Ответ:

    Понравилась статья? Поделить с друзьями:
  • Задачи на магнетизм егэ физика
  • Задачи на логику егэ по информатике
  • Задачи на логику егэ математика базовый уровень
  • Задачи на логарифмы с решением егэ
  • Задачи на логарифмы егэ математика профиль