#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;
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Не добавляется структура во множествоНе могу разобраться в ошибках в функции void initColor(), компилятор указывает на инструкцию isColrs