#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n);
for(int i = 0; i < n; ++i)
cin >> a[i];
int ans = a[0];
for(int i = 1; i < n; ++i)
ans = __gcd(ans, a[i]);
cout << ans << endl;
return 0;
}
Выдает следующую ошибку:
ошибка: статический сбой не выполнен из-за требования '! Is_signed :: value'
примечание: в экземпляре специализации шаблона функции 'std:: __ 1 :: __ gcd 'запрошено здесь ans = __gcd (ans, a [i]);
Я использую команду g ++ -std = c ++ 17, которая работала для каждой программы, кроме этой.
Этот код работает без ошибок на онлайн-компиляторе code.hackerearth.com, который использует g ++ 5.4.0
EDIT: удален бит / stdc ++. H заголовок и включены только необходимые заголовки.
После удаления также возникает та же проблема.Ребята, которые прокомментировали или проголосовали, либо просто не понимают проблему, либо просто пытаются игнорировать проблему, которую не могут решить, просто сказав ее из-за заголовка.
Позвольте мне объяснить вам ясно.ЖЕ код работает правильно в онлайн иде.Ссылка одного из таких идей: ONLINE IDE
Использование их компилятора c ++ и функции __gcd (a, b) не дает никакой ошибки, но, когда я изменяю ее на gcd (a, b) в том же смысле, это дает ошибку, что это определение функции не найдено.
Когда я запускаю тот же код на моей локальной машине, все происходит как раз наоборот.__gcd (a, b) не работает, пока работает gcd (a, b).
Теперь, не могли бы вы мне помочь?