Mariya Filippov
?>

Даны две последовательности целых чисел: a_1, a_2, …, a_8 и b_1, b_2, …, b_8 . найти количество четных чисел в первой из них и количество нечетных во второй. (определить функцию, позволяющую распознавать четные числа

Информатика

Ответы

ecocheminnov437

// код на паскале

 

var

  a, b: array [1 .. 8] of longint;

  i, ans1, ans2: byte;  

 

function check(var x: longint): boolean; // функция проверки числа на четность

begin

  if x mod 2 = 0

    then check : = true

  else

    check : = false;

end;

 

begin

  ans1 : = 0;

  ans2 : = 0;

  for i : = 1 to 8 do

  begin

    read(a[i]);   //читаем число а_і

    if check(a[i]) then //если четное, то

      inc(ans1);   //увеличиваем ответ_1 на 1

  end;

  for i : = 1 to 8 do

  begin

    read(b[i]);   //читаем число b_i

    if not check(b[i]) then   // если нечетное, то

      inc(ans2); // увеличиваем ответ_2 на 1

  end;

  writeln('количество четных чисел в первой последовательности = ', ans1);

  writeln('количество нечетных чисел во второй последовательности = ', ans2);

end.

annashaykhattarova1

в программе на питоне реализован алгоритм евклида для нахождения нод и найдено нок из формулы из условия. большая часть тестов для проверки использует случайные числа, для которых, например, проверяется, что нок и нод от (x, y) не изменяются, если их искать от (y, x), и т.д. (assert expr выбрасывает исключение, если expr ложно, так что если test сработало без ошибок, значит, всё ок)

def gcd_lcm(a, b):

    x, y = a, b

    while x ! = 0 and y ! = 0:

        x, y = y % x, x

    gcd = x + y

    lcm = a // gcd * b

    return gcd, lcm

def test():

    from random import randint

    x, y, z = [randint(1, 1000) for _ in range(3)]

    xx = gcd_lcm(x, x)

    xy = gcd_lcm(x, y)

    yx = gcd_lcm(y, x)

    yz = gcd_lcm(y, z)

    x1 = gcd_lcm(x, 1)

    zx_y = gcd_lcm(z * x, y)

    zx_zy = gcd_lcm(z * x, z * y)

    gcd_xy_z = gcd_lcm(xy[0], z)[0]

    gcd_x_yz = gcd_lcm(x,

    assert xx == (x, x)

    assert xy == yx

    assert xy[1] % xy[0] == 0

    assert xy[1] % x == 0

    assert xy[1] % y == 0

    assert x % xy[0] == 0

    assert y % xy[0] == 0

    assert x1[0] == 1

    assert x1[1] == x

    assert zx_y[0] % xy[0] == 0

    assert zx_y[1] % xy[1] == 0

    assert zx_zy[0] == z * xy[0]

    assert zx_zy[1] == z * xy[1]

    assert gcd_xy_z == gcd_x_yz

    assert gcd_lcm(2**7 * 3**15, 3**4 * 5**3) == (3**4, 2**7 * 3**15 * 5**3)

    assert gcd_lcm(7 * 917887, 7 * 850177) == (7, 7 * 850177 * 917887)

if __name__ == "__main__":

    for _ in range(100):

        test()

jenek-f

ответ:

если на паскале, то вот:

объяснение:

var

    a, b: integer;

function nod(a, b: integer): integer;

begin

    while a * b < > 0 do

        if a > b then

            a : = a mod b

        else

            b : = b mod a;

   

    nod : = a + b;

end;

begin

    readln(a, b);

    write('nok = ', a * b / nod(a, b));

end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Даны две последовательности целых чисел: a_1, a_2, …, a_8 и b_1, b_2, …, b_8 . найти количество четных чисел в первой из них и количество нечетных во второй. (определить функцию, позволяющую распознавать четные числа
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

garunkhachatryan
juli19657
PetrovDrozdov1785
priexali
КутузоваМартенюк
mirogall
Анатольевич
Yevgenevich
gri-7410
ilyxa08
Д.О. Игорь
nikomuneskazhu60
dimiff5
Dmitrievich-Telishev
ilkindadashov935232