e-olymp 571. НОД

Задача

Найти НОД (наибольший общий делитель ) $n$ чисел.

Входные данные

Первая строка содержит количество чисел [latex]n \left(1 < n < 101\right)[/latex]. Во второй строке через пробел заданы [latex]n[/latex] натуральных чисел, каждое из которых не превышает [latex]30000[/latex].

Выходные данные

НОД заданных чисел.

Тесты

# Входные данные Выходные данные
1 3
5 7 2
1
2 2
45 10
5
3 4
27 90 15 9
3
4 2
40 64
8
5 3
8 8 8
8

Код

Решение задачи


Для решения данной задачи воспользуемся алгоритмом Евклида — алгоритмом нахождения наибольшего общего делителя (НОД) пары целых чисел, т.е. самого большого числа, на которое можно без остатка разделить оба числа, для которых ищется НОД.

  • Условие задачи на e-olymp
  • Код решения на ideone

2 thoughts on “e-olymp 571. НОД

    • А зачем Вам так жонглировать res=gcd (a, b); b=res;? Сразу положить в нужную переменную нельзя?
    • Поставьте, пожалуйста, пробелы с обоих сторон знаков операций. Не так страшно, но раз всё равно переделывать…
    • Решение ничего не решает. Вы просто словами описали программу, а не алгоритм. И то с неточностями. Например, Вы находите не gcd(a, b, c), gcd(gcd(a, b), c). И это правильно. Но нужно же написать об этом и пояснить, почему результат будет тот же.
    • Там, где в программе используется какой-то не очевидный трюк (например, здесь return a+b;) обязательно должно быть пояснение.
    • Если в теле цикла или условного оператора присутствует только один оператор, его можно не брать в фигурные скобки. А можно и брать. Вы так и делаете — то берете, то нет. Определитесь.
    • Вы не рекурсивно реализовали алгоритм Евклида. Либо опишите алгоритм, либо дайте ссылку на него.

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

Добавить комментарий