C/C++

С++ СИРИУС КУРСЫ ОТВЕТЬТЕ ПЖ ПОЛНЫМ КОДОМ

Дана последовательность натуральных чисел. Найдите наибольший общий делитель всех элементов последовательности и сократите все её члены на него.
Решение оформите в виде функции bool isDivisor(vector<int> &A, int d), проверяющей, является ли число d общим делителем последовательности, и функции void reduction(vector<int> &A), которая находит наибольший общий делитель и сокращает все члены последовательности на него.
Входные данные
В первой строке входных данных записано натуральное число n (n⩽100) — количество элементов последовательности. В следующей строке даны n натуральных чисел, не превышающих 10000, — элементы последовательности.
Выходные данные
Выведите n чисел — итоговую последовательность.
 #include  
#include
using namespace std;
bool isDivisor(vector& A, int d) {
for (auto a : A) if (a % d != 0) return false;
return true;
}
void reduction(vector& A) {
auto max = A.front();
for (auto a : A) if (a > max) max = a;
do if (isDivisor(A, max)) break; while (--max > 1);
for (auto& a : A) a /= max;
}
int main() {
int n;
cin >> n;
vector A(n);
for (int i = 0; i < n; ++i) {
cin >> A[i];
}
reduction(A);
for (int i = 0; i < A.size(); ++i) {
cout
Нурабаев Саят
Нурабаев Саят
99 947
Лучший ответ
А зачем здесь нужна логическая функция isDivisor, если без неё намного лучше? Но если уж нужна - пусть остаётся без использования в прототипе:
#include <vector>
#include <iostream>
using namespace std; int divisor;
int GCD(int x, int y)
{ int z = x % y; return z == 0 ? y : GCD(y, z); }
bool isDivisor(vector <int> &A, int d);
int gcd(vector <int> &A)
{ divisor = A[0]; for (int i = 0; i < A.size(); i++)
divisor = GCD(divisor, A[i]); }
void reduction(vector <int> &A)
{ for (int i = 0; i < A.size(); i++) A[i] /= divisor; }
int main()
{ int i, n; cin >> n; vector <int> A(n);
for (i = 0; i < n; i++) cin >> A[i]; gcd(A);
cout << "gcd(A) = " << divisor << endl;
reduction(A); for (i = 0; i < n; i++) cout << i + 1
<< ") " << A[i] << endl; cin.get(); cin.get(); return 0; }
Или лучше так:
#include <vector>
#include <iostream>
using namespace std;
int gcd(int x, int y)
{ int z = x % y; return z == 0 ? y : gcd(y, z); }
void reduction(vector <int> &A)
{
int divisor = A[0];
for (int i = 0; i < A.size(); i++)
divisor = gcd(divisor, A[i]);
for (int i = 0; i < A.size(); i++) A[i] /= divisor; }
int main()
{
int i, n;
cin >> n;
vector <int> A(n);
for (i = 0; i < n; i++) cin >> A[i];
reduction(A); for (i = 0; i < n; i++)
cout << i + 1 << ") " << A[i] << endl;
}
Василий Грачев
Василий Грачев
66 572
Романчик Степанов Чел код надо дополнить помоги пж