№№ заданий Пояснения Ответы Ключ Добавить инструкцию Критерии
Источник Раздел кодификатора ФИПИ Справка
PDF-версия PDF-версия (вертикальная) PDF-версия (крупный шрифт) PDF-версия (с большим полем) Версия для копирования в MS Word
Вариант № 4871409

1.

Даны 4 целых числа, записанных в двоичной системе:

 

10001011; 10111000; 10011011; 10110100.

 

Сколько среди них чисел, больших, чем 9A16?

2.

Ло­ги­че­ская функ­ция F задаётся вы­ра­же­ни­ем (x ∧ ¬y) \/ (yz) \/ ¬w. На ри­сун­ке при­ведён фраг­мент таб­ли­цы ис­тин­но­сти функ­ции F, со­дер­жа­щий все на­бо­ры ар­гу­мен­тов, при ко­то­рых функ­ция F ложна. Опре­де­ли­те, ка­ко­му столб­цу таб­ли­цы ис­тин­но­сти функ­ции F со­от­вет­ству­ет каж­дая из пе­ре­мен­ных w, x, y, z. Все стро­ки в пред­став­лен­ном фраг­мен­те раз­ные.

 

Перем.1Перем.2Перем.3Перем.4
????????????
0
100
100

 

В от­ве­те на­пи­ши­те буквы w, x, y, z в том по­ряд­ке, в ко­то­ром идут со­от­вет­ству­ю­щие им столб­цы (без раз­де­ли­те­лей).

3.

На рисунке слева изображена схема дорог Н-ского района, в таблице звёздочкой обозначено наличие дороги из одного населённого пункта в другой. Отсутствие звёздочки означает, что такой дороги нет.

 

 

Каждому населённому пункту на схеме соответствует его номер в таблице, но неизвестно, какой именно номер. Определите, какие номера населённых пунктов в таблице могут соответствовать населённым пунктам B и C на схеме. В ответе запишите эти два номера в возрастающем порядке без пробелов и знаков препинания.

4.

В фрагменте базы данных представлены сведения о родственных отношениях. На основании приведённых данных определите ID родного брата Седых В. А.

 

Таблица 1
IDФамилия_И._О.Пол
1588Саенко М. А.Ж
1616Билич А. П.М
1683Виктюк И. Б.М
1748Кеосаян А. И.Ж
1960Виктюк П. И.М
1974Тузенбах П. А.Ж
2008Виктюк Б. Ф.М
2106Чижик Д. К.Ж
2339Седых Л. А.М
2349Виктюк А. Б.Ж
2521Меладзе К. Г.М
2593Билич П. А.М
2730Виктюк Т. И.Ж
2860Панина Р. Г.Ж
2882Шевченко Г. Р.Ж
2911Седых В. А.Ж

Таблица 2
ID_РодителяID_Ребенка
16161588
23491588
20081683
21061683
16831960
28821960
28601974
28602339
20082349
21062349
16162593
23492593
16832730
28822730
16162911
23492911

5.

Черно-белое растровое изображение кодируется построчно, начиная с левого верхнего угла и заканчивая в правом нижнем углу. При кодировании 1 обозначает черный цвет, а 0 — белый.

Закодируйте таким образом изображение и запишите результат в восьмеричной системе счисления.

6.

У исполнителя, который работает с положительными однобайтовыми двоичными числами, две команды, которым присвоены номера:

1. сдвинь вправо

2. прибавь 4

Выполняя первую из них, исполнитель сдвигает число на один двоичный разряд вправо, а выполняя вторую, добавляет к нему 4. Исполнитель начал вычисления с числа 191 и выполнил цепочку команд 112112. Запишите результат в десятичной системе.

7.

В ячейке М21 электронной таблицы записана формула. Эту формулу скопировали в ячейку L22. В соответствии с формулой, полученной в ячейке L22, значение в этой ячейке равно произведению значений в ячейках В36 и A37. Напишите, сколько из следующих четырёх утверждений не противоречат этим данным.

 

A) Значение в ячейке М21 равно х·у, где х — значение в ячейке В36, а у — значение в ячейке A37.

Б) Значение в ячейке М21 равно х·у, где х — значение в ячейке С35, а у — значение в ячейке A37.

В) Значение в ячейке М21 вычисляется по формуле х·у, где х — значение в ячейке С36, а у — значение в ячейке А36.

Г) Значение в ячейке М21 равно х2 , где х — значение в ячейке В36.

8.

Определите, что будет напечатано в результате работы следующего фрагмента программы:

 

БейсикPython

DIM K, S AS INTEGER

S = 0

K = 0

WHILE K < 30

    K = K + 3

    S = S + K

WEND

PRINT S

s = 0

k = 0

while k < 30:

    k += 3

    s += k

print(s)

ПаскальАлгоритмический язык

var k, s: integer;

begin

       s:=0;

       k:=0;

      while k < 30 do begin

             k:=k+3;

            s:=s+k;

       end;

      write(s);

end.

алг

нач

    цел k, s

    s := 0

    k := 0

    нц пока k < 30

        k := k + 3

        s := s + k

    кц

    вывод s

кон

Си++

#include <iostream>

using namespace std;

int main() {

    int s, k;

    s = 0, k = 0;

    while (k < 30) {

        k = k + 3;

        s = s + k;

    }

    cout << s << endl;

    return 0;

}

 

9.

Про­из­во­ди­лась че­ты­рех­ка­наль­ная (квад­ро) зву­ко­за­пись с ча­сто­той дис­кре­ти­за­ции 24 кГц и 16-бит­ным раз­ре­ше­ни­ем. В ре­зуль­та­те был по­лу­чен файл раз­ме­ром 1800 Мбайт, сжа­тие дан­ных не про­из­во­ди­лось. Опре­де­ли­те при­бли­зи­тель­но, сколь­ко минут про­из­во­ди­лась за­пись.

В ка­че­стве от­ве­та ука­жи­те бли­жай­шее к вре­ме­ни за­пи­си целое число минут.

10.

Шифр ко­до­во­го замка пред­став­ля­ет собой по­сле­до­ва­тель­ность из пяти сим­во­лов, каж­дый из ко­то­рых яв­ля­ет­ся циф­рой от 1 до 5. Сколь­ко раз­лич­ных ва­ри­ан­тов шифра можно за­дать, если из­вест­но, что цифра 1 встре­ча­ет­ся ровно три раза, а каж­дая из дру­гих до­пу­сти­мых цифр может встре­чать­ся в шифре любое ко­ли­че­ство раз или не встре­чать­ся со­всем?

11.

Ниже на пяти языках программирования записан рекурсивный алгоритм F.

 

БейсикPython

SUB F(n)

    PRINT n

    IF n < 5 THEN

        F(n + 1)

        F(n + 3)

    END IF

END SUB

def F(n):

    print(n)

    if n < 5:

        F(n + 1)

        F(n + 3)

ПаскальАлгоритмический язык

procedure F(n: integer);

    begin

        writeln(n);

        if n < 5 then

            begin

                F(n + 1);

                F(n + 3)

            end

    end

алг F(цел n)

нач

вывод n, нс

если n < 5 то

    F(n + 1)

    F(n + 3)

все

кон

С++

void F(int n)

{

    cout << n << endl;

    if (n < 5) {

        F(n + 1);

        F(n + 3);

    }

}

 

Чему равна сумма всех чисел, напечатанных на экране при выполнении вызова F(1)?

12.

Маской подсети называется 32-разрядное двоичное число, которое определяет, какая часть IP-адреса компьютера относится к адресу сети, а какая часть IP-адреса определяет адрес компьютера в подсети. В маске подсети старшие биты, отведенные в IP-адресе компьютера для адреса сети, имеют значение 1; младшие биты, отведенные в IP-адресе компьютера для адреса компьютера в подсети, имеют значение 0.

Если маска подсети 255.255.255.224 и IP-адрес компьютера в сети 162.198.0.157, то порядковый номер компьютера в сети равен_____

13.

B некоторой стране автомобильный номер длиной 6 символов составляют из заглавных букв (используются только 33 различных буквы) и десятичных цифр в любом порядке. Каждый такой номер в компьютерной программе записывается минимально возможным и одинаковым целым количеством байтов (при этом используют посимвольное кодирование и все символы кодируются одинаковым и минимально возможным количеством битов). Определите объём памяти, отводимый этой программой для записи 125 номеров. (Ответ дайте в байтах.)

 

14.

Си­сте­ма ко­манд ис­пол­ни­те­ля РОБОТ, «жи­ву­ще­го» в пря­мо­уголь­ном ла­би­рин­те на клет­ча­той плос­ко­сти, вклю­ча­ет в себя 4 ко­ман­ды-при­ка­за и 4 ко­ман­ды про­вер­ки усло­вия. Ко­ман­ды-при­ка­зы: вверх, вниз, влево, впра­во. При вы­пол­не­нии любой из этих ко­манд РОБОТ пе­ре­ме­ща­ет­ся на одну клет­ку со­от­вет­ствен­но: вверх ↑, вниз ↓, влево ←, впра­во →. Если РОБОТ начнёт дви­же­ние в сто­ро­ну на­хо­дя­щей­ся рядом с ним стены, то он раз­ру­шит­ся, и про­грам­ма прервётся.

Дру­гие 4 ко­ман­ды про­ве­ря­ют ис­тин­ность усло­вия от­сут­ствия стены у каж­дой сто­ро­ны той клет­ки, где на­хо­дит­ся РОБОТ: свер­ху сво­бод­но, снизу сво­бод­но, слева сво­бод­но, спра­ва сво­бод­но.

Цикл

ПОКА усло­вие

по­сле­до­ва­тель­ность ко­манд

КОНЕЦ ПОКА

 

вы­пол­ня­ет­ся, пока усло­вие ис­тин­но.

 

В кон­струк­ции

ЕСЛИ усло­вие

ТО ко­ман­да1

ИНАЧЕ ко­ман­да2

КОНЕЦ ЕСЛИ

 

вы­пол­ня­ет­ся ко­ман­да1 (если усло­вие ис­тин­но) или ко­ман­да2 (если усло­вие ложно).

 

Сколь­ко кле­ток ла­би­рин­та со­от­вет­ству­ют тре­бо­ва­нию, что, начав дви­же­ние в ней и вы­пол­нив пред­ло­жен­ную про­грам­му, РОБОТ уце­ле­ет и оста­но­вит­ся в за­кра­шен­ной клет­ке (клет­ка F6)?

НА­ЧА­ЛО

ПОКА снизу сво­бод­но ИЛИ спра­ва сво­бод­но

ПОКА спра­ва сво­бод­но

впра­во

КОНЕЦ ПОКА

вниз

КОНЕЦ ПОКА

КОНЕЦ

15.

На ри­сун­ке пред­став­ле­на схема дорог. По каж­дой до­ро­ге можно дви­гать­ся толь­ко в одном на­прав­ле­нии, ука­зан­ном стрел­кой. Сколь­ко су­ще­ству­ет раз­лич­ных путей из го­ро­да А в город К, про­хо­дя­щих через город Г и НЕ про­хо­дя­щих через город З?

16.

Чему равно наименьшее основание позиционной системы счисления x, при котором 225x = 405y?

Ответ записать в виде целого числа.

17.

В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ «|», а для обозначения логической операции «И» – символ «&».

В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет.

 

 

 

ЗапросНайдено страниц (в тысячах)
Новосибирск & (Красноярск & Хабаровск | Норильск)570
Новосибирск & Красноярск & Хабаровск436
Новосибирск & Красноярск & Хабаровск & Норильск68

 

Какое количество страниц (в тысячах) будет найдено по запросу

Новосибирск & Норильск

Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.

18.

Обозначим через m&n поразрядную конъюнкцию неотрицательных целых чисел m и n.

Так, например, 14&5 = 11102&01012 = 01002 = 4.

Для какого наименьшего неотрицательного целого числа А формула

 

x&51 = 0 ∨ (x&41 = 0 → x&А = 0)

 

тождественно истинна (т. е. принимает значение 1 при любом неотрицательном целом значении переменной x)?

19.

Ниже пред­став­лен за­пи­сан­ный на раз­ных язы­ках про­грам­ми­ро­ва­ния фраг­мент одной и той же про­грам­мы. В про­грам­ме опи­сан од­но­мер­ный це­ло­чис­лен­ный мас­сив A; в пред­став­лен­ном фраг­мен­те об­ра­ба­ты­ва­ют­ся эле­мен­ты мас­си­ва с ин­дек­са­ми от 1 до 10.

 

Бей­сикPython

n = 10

d = 6

FOR j = 1 TO d

  s = A(1)

  FOR i = 1 TO n-1

    A(i) = A(i+1)

  NEXT i

  A(10) = s

NEXT j

n = 10

d = 6

for j in range(1,d+1):

  s = A[1]

  for i in range(1,n):

    A[i] = A[i+1]

  A[10] = s

Пас­кальАл­го­рит­ми­че­ский язык

n := 10;

d := 6;

for j:=1 to d do begin

  s := A[1];

  for i:=1 to n-1 do begin

    A[i] := A[i+1];

  end;

  A[10] := s;

end;

n := 10

d := 6

нц для j от 1 до d

  s := A[1]

  нц для i от 1 до n-1

    A[i] := A[i+1]

  кц

  A[10]:= s

кц

Си++

n = 10;

d = 6;

for (j = 1; j <= d; j++) {

  s = A[1];

  for (i = 1; i <= n-1; i++) {

    A[i] = A[i+1];

  }

  A[10] = s;

}

 

 

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

Зна­че­ние ка­ко­го из этих эле­мен­тов мас­си­ва будет наи­боль­шим после вы­пол­не­ния фраг­мен­та про­грам­мы? В от­ве­те ука­жи­те ин­декс эле­мен­та – число от 1 до 10.

 

При­ме­ча­ние. В язы­ках Python и C++ ну­ле­вой эле­мент мас­си­ва может при­ни­мать любое зна­че­ние, эле­мен­ты мас­си­ва с ин­дек­са­ми от 1 до 10 объ­яв­ле­ны так, как ука­за­но в усло­вии.

20.

Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное число x, этот алгоритм печатает число S. Укажите такое наименьшее число x, при вводе которого алгоритм печатает шестизначное число.

 

БейсикPython

DIM X,S,D,R AS LONG

INPUT X

S = X

R = 0

WHILE X > 0

  D = X MOD 2

  R = 10*R + D

   X = X \ 2

WEND

S = R + S

PRINT S

x = int(input())

S = x;

R = 0

while x > 0:

   d = x % 2

   R = 10*R + d

  x=x / / 2

S = R + S

print(S)

ПаскальАлгоритмический язык

var x,d,R,S: longint;

begin

     readln(x);

     S := x;

     R := 0;

     while x > 0 do

     begin

       d := x mod 2;

       R := 10*R + d;

       x := x div 2;

     end;

     S := R + S;

     writeln(S);

end.

алг

нач

     цел x, d, R, S

     ввод x

     S := x

     R := 0

     нц пока x > 0

         d := mod(x, 2)

         R := 10*R + d

         x := div(x, 2)

     кц

     S := R + S

    вывод S

кон

Си++

#include <iostream>

using namespace std;

int main()

{

     long x,d,R,S;

     cin >> x;

     S = x;

     R = 0;

     while (x > 0){

         d = x % 2;

         R = 10*R + d;

         x = x / 2;

       }

     S = R + S

     cout << S << endl;

    return 0;

}

 

21.

Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках программирования).

 

БейсикПаскаль

DIM A, B, T, M, R AS INTEGER

A = -15: B = 15

M = A: R = F(А)

FOR T = A TO B

  IF F(T) < R THEN

    M = T

    R = F(T)

  END IF

NEXT T

PRINT M+50

 

FUNCTION F(x)

F=10*x*x-100*ABS(x)+210

END FUNCTION

var a, b, t, M, R: integer;

Function

F(x:integer):integer;

  begin

    F := 10*x*x-100*abs(x)+210

    end;

 

begin

  a := -15; b := 15;

  M := a; R := F(a);

  for t := a to b do begin

    if (F(t) < R) then begin

      M := t;

      R := F(t)

    end

  end;

  write(M+50)

end.

Си++Алгоритмический язык

#include <iostream>

using namespace std;

int F(int x)

{

  return 10*x*x-100*abs(x)+210;

}

 

int main()

{

  int a, b, t, M, R;

  a = -15; b = 15;

  M = a; R = F(a);

  for (t = a; t <= b; t++) {

    if (F(t) < R) {

      M = t; R = F(t);

    }

  }

  cout << M+50 << endl;

}

алг

нач

  цел a, b, t, M, R

  a := -15; b := 15

  M := a; R := F(a)

  нц для t от a до b

    если F(t) < R

      то M := t; R := F(t)

    все

  кц

  вывод M+50

кон

 

алг цел F(цел x)

нач

  знач:=10*x*x-100*iabs(x)+210

кон

Python

def f(x):

    return 10*x*x-100*abs(x)+210

a = -15

b = 15

M = a

R = f(a)

for t in range(a, b+1):

    if (f(t) < R):

        M = t

        R = f(t);

print(M+50)

 

22.

У исполнителя Калькулятор две команды:

 

1. прибавь 2

2. прибавь 3.

 

Первая из них увеличивает число на экране на 2, вторая — на 3. Сколько различных чисел можно получить из числа 2 с помощью программы, которая содержит ровно 10 команд?

23.

Сколько существует различных наборов значений логических переменных x1, x2, … x7, y1, y2, … y7, которые удовлетворяют всем перечисленным ниже условиям?

 

(x1 ∨ y1) ∧ ((x2 ∧ y2) → (x1 ∧ y1)) = 1

(x2 ∨ y2) ∧ ((x3 ∧ y3) → (x2 ∧ y2)) = 1

(x6 ∨ y6) ∧ ((x7 ∧ y7) → (x6 ∧ y6)) = 1

(x7 ∨ y7) = 1

 

В ответе не нужно перечислять все различные наборы значений переменных x1, x2, ..., x7, y1, y2, ..., y7, при которых выполнена данная система равенств. В качестве ответа Вам нужно указать количество таких наборов.

24.

На обработку поступает последовательность из четырёх целых чисел. Нужно написать программу, которая выводит на экран количество неотрицательных чисел последовательности и их произведение. Если неотрицательных чисел нет, требуется вывести на экран «NO». Известно, что вводимые числа по абсолютной величине не превышают 10. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.

 

Бейсик Python

count = 0

p = 0

FOR I = 1 TO 4

    INPUT x

    IF x >= 0 THEN

        p = p*x

        count = count + 1

    END IF

NEXT I

IF count > 0 THEN

    PRINT x

    PRINT p

ELSE

    PRINT "NO"

END IF

count = 0

p = 0

for i in range(1, 5):

    x = int(input())

    if x >= 0:

        p = p*x

        count = count + 1

if count > 0:

    print(x)

    print(p)

else:

    print("NO")

Алгоритмический язык Паскаль

алг

нач

    цел p,i,x,count

    count := 0

    p := 0

    нц для i от 1 до 4

        ввод x

        если x >= 0 то

            p := p*x

            count := count+1

        все

    кц

    если count > 0 то

        вывод x, нс

        вывод p

    иначе

        вывод "NO"

    все

кон

var p,i,x,count: integer;

begin

    count := 0;

    p := 0;

    for i := 1 to 4 do

    begin

        read (x);

        if x >= 0 then begin

            p := p*x;

            count := count+1;

        end

    end;

    if count > 0 then

    begin

        writeln(х);

        writeln(p);

    end

    else

        writeln('NO');

end.

Си++

#include <iostream>

using namespace std;

int main(void)

{

    int p, i, x, count;

    count = 0;

    p = 0;

    for (i = 1; i <= 4; i++)

    {

        cin >> x;

        if (x >= 0)

        {

            p = p*x;

            count = count+1;

        }

    }

    if (count > 0)

    {

        cout << x << "\n";

        cout << p << "\n";

    }

    else

        cout << "NO\n";

    }

 

 

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе последовательности -5 2 1 3.

2. Приведите пример такой последовательности, содержащей хотя бы одно неотрицательное число, что, несмотря на ошибки, программа печатает правильный ответ.

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

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования.

Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.

Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

25.

Дан массив, содержащий неотрицательные целые числа. Если сумма всех элементов массива чётная, нужно вывести количество чётных (по значению) элементов массива, если нечётная – количество нечётных.

Например, для массива из 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). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.

26.

Два игрока играют в следующую игру. На координатной плоскости стоит фишка. Игроки ходят по очереди. В начале игры фишка находится в точке с координатами (3, −5). Ход состоит в том, что игрок перемещает фишку из точки с координатами (x, y) в одну из трёх точек: или в точку с координатами (x + 3, y), или в точку с координатами (x, y + 4), или в точку с координатами (x, y + 5). Выигрывает игрок, после хода которого расстояние по прямой от фишки до точки с координатами (0, 0) больше 9 единиц. Кто выиграет при безошибочной игре обоих игроков — игрок, делающий первый ход, или игрок, делающий второй ход? Каким должен быть первый ход выигрывающего игрока? Ответ обоснуйте.

Постройте дерево партии для выигрышной стратегии (в виде рисунка или таблицы).

27.

На вход программы поступает последовательность из N целых положительных чисел, все числа в последовательности различны. Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре не важен). Необходимо определить количество пар, для которых произведение элементов не делится на 34.

Описание входных и выходных данных

В первой строке входных данных задаётся количество чисел N (1 ≤ N ≤ 1000). В каждой из последующих N строк записано одно целое положительное число, не превышающее 10 000. В качестве результата программа должна напечатать одно число: количество пар, в которых произведение элементов не кратно 34.

Пример входных данных:

5

3

4

10

11

17

Пример выходных данных для приведённого выше примера входных данных:

8

Пояснение. Из пяти заданных чисел можно составить 10 попарных произведений: 3·4, 3·10, 3·11, 3·17, 4·10, 4·11, 4·17, 10·11, 10·17, 11·17 (результаты: 12, 30, 33, 51, 40, 44, 68, 110, 170, 187). Из них на 34 не делятся 8 произведений (3·4=12, 3·10=30, 3·11=33, 3·17=51, 4·10=40, 4·11=44, 10·11=110, 11·17=187).

Требуется написать эффективную по времени и по памяти программу для решения описанной задачи.

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

Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 Кбайт и не увеличивается с ростом N.

Максимальная оценка за правильную (не содержащую синтаксических ошибок и дающую правильный ответ при любых допустимых входных данных) программу, эффективную по времени и по памяти, — 4 балла.

Максимальная оценка за правильную программу, эффективную только по времени — 3 балла.

Максимальная оценка за правильную программу, не удовлетворяющую требованиям эффективности, — 2 балла.

Вы можете сдать одну программу или две программы решения задачи (например, одна из программ может быть менее эффективна). Если Вы сдадите две программы, то каждая из них будет оцениваться независимо от другой, итоговой станет бо́льшая из двух оценок.

Перед текстом программы обязательно кратко опишите алгоритм решения. Укажите использованный язык программирования и его версию.