СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости




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

Решение.

На первый взгляд для решения задачи нужны 4 переменных: счётчик для перебора элементов, счётчики чётных и нечётных элементов, сумма всех элементов, но в условии разрешено использовать только 2 переменные.

Чтобы обойти это ограничение, заметим, что на самом деле достаточно подсчитывать только количество нечётных элементов. Значение суммы можно не вычислять, так как требуется только чётность суммы, а она однозначно определяется количеством нечётных элементов. Количество чётных элементов, если оно потребуется, можно вычислить, зная общее число элементов и количество нечётных.

Эта идея реализована в следующем фрагменте на языке Паскаль.

k:=0;

for i:=1 to N do begin

    if a[i] mod 2 = 1 then k:=k+1;

end;

if k mod 2 = 1

    then writeln(k)

else writeln(N-k);

 

Возможно также двухпроходное решение: на первом проходе определяется общая сумма, на втором количество элементов нужной чётности.

Эта идея реализована в следующем фрагменте на алгоритмическом языке.

 

k:=0;

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

    k:=k+a[i]

кц

если mod(k,2)=0

    то

        k:=0;

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

            если mod(a[i],2) = 0

                то k:=k+1

            все

        кц

    иначе

        k:=0;

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

            если mod(a[i],2) = 1

                то k:=k+1

            все

    кц

все

вывод k