Задача к ЕГЭ по информатике на тему «соседние элементы, проверка условий» №3

Дан целочисленный массив из N  = 70  элементов. Элементы массива могут принимать целые значения от -10000 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти количество пар элементов массива, у которых разность по модулю больше 14 и первый элемент при делении на второй дает число, большее по модулю единицы. Под парой подразумевается два подряд идущих элемента массива. Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Индексация элементов в массиве начинается с нуля.

|--------------------------------|---------------------------------------|--------------------------| |Б-ейсик-------------------------|P-ython--------------------------------|А-лгор-итм-ически-й-язык--| |CON   ST N ASIN   TEGER    = 70 |#   д опускает ся т акж е              |а-лг                      | |DIM   A (0T ON   − 1)ASLON   G   |#   и спользо вать четы ре             |н-ач                      | |DIM   IASLON    G               |#  цел очислен ны е пер еменн ые i,t,k,m|   целN  = 70             | |                                |                                       |   ----                   | |     T ASLON   G                |a =  []                                 |   целтабa [0 : N − 1]     | |     KASLON    G                |n =  70                                |   целi,t,k,m             | |     M ASLON    G               |                                       |                          | |F ORI  =  0T ON  − 1            |f oriinrange  (0, n) :                   |   нц для iот0 доN  − 1    | |                                |                                       |   -------    ---         | |     IN P U TA (I)              |   a.append(int(input()))              |     вводa [i]             | |N EXT   I                       |...                                    |   кц--                   | |...                             |                                       |...                       | -EN--D--------------------------------------------------------------------к-он----------------------|

|--------------------------------|------------------------------------| |-П-аскаль-----------------------|C-+-+-------------------------------| |const                           |#include  < iostream  >             | |  N  =  70                      |usingnamespacestd;                  | |var                             |constintN  = 70;                    | |                                |                                    | |  a : array[0..N  − 1]oflongint; |intmain (){                         | |  i,t,k,m  : longint;           |longa[N ];                          | |begin                           |longi,t,k,m;                        | |  f ori := 0toN − 1do           |for(i = 0;i < N ;i + +)cin > > a[i]; | |     readln(a[i]);               |…                                  | |                                |                                    | |…                              |return0;                            | -end.——————————}————————————| » class=»math-display» width=»auto»></center> </p>
<p class= В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Cython 0.20). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.

Например, для исходного массива из 10 элементов

57

95

-42

-849

8003

674

-305

667

665

2

программа должна вывести

4

(Условию удовлетворяют следующие пары: 95 и -42, 8003 и 674, 674 и -305, 665 и 2).

Для удобства за пару будем считать элементы a[i]  и a[i + 1]  (не a[i]  и a[i − 1]  !).

t  будет отвечать за количество пар, подходящих по условие, поэтому изначально она равна нулю.

В цикле от 0 до N  − 1  (если мы укажем цикл до N  , то программа будет пытаться проверить пару a[N  − 1]  и a[N ]  , но элемента a[N ]  не существует в силу индексации с нуля) мы будем проверять, что |a[i] − a[i + 1]| > 14  » class=»math» width=»auto»> и что <img decoding= на 1. Вне цикла выведем t  .

Так как нам нужно узнать разность и результат деления первого элемента на второй по модулю, а другие библиотеки подключать нельзя, будем делать так: если разность получилась отрицательной, мы меняем знак на обратный, если положительной — оставляем. Аналогично и с делением.

Пример на C  + +  :

k = 0,m  = 0;

for(i = 0;i < N − 1; i + + ){

k = a[i] − a[i + 1 ];

m =  a[i]∕a[i + 1 ];

if(k < 0)k = − k;

if(m <  0)m =  − m;

if((k > 14)& & (m  > 1))t + +;  » class=»math» width=»auto»> </p>
<p class= }

cout < < t;

Ответ: см. решение
Оцените статью
Я решу все!