#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a, ll b)
{ return b?gcd(b,a%b):a;
}
int main() {
ios::sync_with_stdio(0); // для ускорения ввода
cin.tie(0);
int N;
cin >> N;
ll a[64];
unordered_set<ll> total;
for (int ff = 0, nff = 0; cin >> a[ff++]; ff = nff, nff = 0)
for (int i = 0; i < ff; ++i) {
total.insert(a[nff] = gcd(a[i], a[ff-1]));
if (!nff || a[nff] != a[nff-1]) ++nff;
}
cout << total.size() << endl;
}
ОбЪясните, пожалуйста, что такое:
ll gcd(ll a, ll b)
{ return b?gcd(b,a%b):a;
}
а то я c++ плохо знаю, а в разборе задачи попадается такая вещь
Интересующая вас функция возвращает Наибольший общий делитель. Функция реализована по рекурсивному алгоритму определения НОД. Выбранный алгоритм является не безопасным (см. статью).
Возможно, вас смутил Тернарный оператор,
return b?gcd(b,a%b):a;
ее можно заменить на:
if(b != 0)
return gcd(b,a%b);
else
return a;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не добавляется структура во множествоНе могу разобраться в ошибках в функции void initColor(), компилятор указывает на инструкцию isColrs