dariaskaldina
16.02.2020 09:38

Наибольший общий делитель (НОД) двух чисел может вычислен по формуле:НОД(a,b) = a, если b = 0;НОД(a,b) =НОД(b,a%b), если b > 0, где % — остаток от деления.

Наибольший общий делитель нескольких чисел вычисляется последовательным применением НОД к парам чисел:

НОД(a,b,c) =НОД(НОД(a,b),c)НОД(a) = a

Вам дана последовательность a1,a2,…,aN. Требуется подсчитать количество различных НОД подпоследовательностей ai,ai+1,…,aj (где 1 ≤ i ≤ j ≤ N) этой последовательности.

Формат ввода

Первая строка ввода содержит одно целое число N(1 ≤ N ≤ 500000). Вторая строка ввода содержит N целых чисел в диапазоне от 1 до 1018, разделенных пробелами —последовательность a1,a2,…,aN.

Формат вывода

Вывести одно целое число — количество различных значений среди gcd для всех непрерывных подпоследовательностей в заданной последовательности.

Пример 1

ВВОД

4
9 6 2 4

ВЫВОД

6

Пример 2

ВВОД

4
9 6 3 4

ВЫВОД

5

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
casio007001
09.03.2022 04:03
#include <iostream>

using namespace std;

int main() {
    int n;
    cout << "Ââåäèòå êîëè÷åñòîâ äîìîâ: ";
    cin >> n;
    cout << endl;
    cout << "Ââåäèòå êîëè÷åñòâî æèòåëåé â êàæäîì  äîìå: ";
    int chet = 0, nechet = 0;
    for (int i = 0; i < n; i++)
    {
        int x;
        cin >> x;
        if (i % 2 == 0)
           chet += x;
        else
            nechet += x;
    }
    cout << endl;
    if (chet == nechet)
       cout << "Ðàâíîå êîëè÷åñòâî æèòåëåé íà îáåèõ ñòîðîíàõ óëèöû." << endl;
    else
        if (chet > nechet)
           cout << "Áîëüøå æèòåëåé íà ÷åòíîé ñòîðîíå óëèöû." << endl;
        else
            cout << "Áîëüøå æèòåëåé íà íå÷åòíîé ñòîðîíå óëèöû." << endl;
    system("pause");
    return 0;
}
0,0(0 оценок)
Ответ:
28номер
09.03.2022 04:03
#include <iostream>

using namespace std;

int main() {
    int n;
    cout << "Ââåäèòå êîëè÷åñòîâ äîìîâ: ";
    cin >> n;
    cout << endl;
    cout << "Ââåäèòå êîëè÷åñòâî æèòåëåé â êàæäîì  äîìå: ";
    int chet = 0, nechet = 0;
    for (int i = 0; i < n; i++)
    {
        int x;
        cin >> x;
        if (i % 2 == 0)
           chet += x;
        else
            nechet += x;
    }
    cout << endl;
    if (chet == nechet)
       cout << "Ðàâíîå êîëè÷åñòâî æèòåëåé íà îáåèõ ñòîðîíàõ óëèöû." << endl;
    else
        if (chet > nechet)
           cout << "Áîëüøå æèòåëåé íà ÷åòíîé ñòîðîíå óëèöû." << endl;
        else
            cout << "Áîëüøå æèòåëåé íà íå÷åòíîé ñòîðîíå óëèöû." << endl;
    system("pause");
    return 0;
}
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота