Дана последовательность натуральных чисел. Найдите наибольший общий делитель всех элементов последовательности и сократите все её члены на него.
Решение оформите в виде функции bool isDivisor(vector<int> &A, int d), проверяющей, является ли число d общим делителем последовательности, и функции void reduction(vector<int> &A), которая находит наибольший общий делитель и сокращает все члены последовательности на него.
Входные данные
В первой строке входных данных записано натуральное число n (n⩽100) — количество элементов последовательности. В следующей строке даны n натуральных чисел, не превышающих 10000, — элементы последовательности.
Выходные данные
Выведите n чисел — итоговую последовательность.
C/C++
С++ СИРИУС КУРСЫ ОТВЕТЬТЕ ПЖ ПОЛНЫМ КОДОМ
#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
А зачем здесь нужна логическая функция 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;
}
#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;
}
Романчик Степанов
Чел код надо дополнить помоги пж
Похожие вопросы
- Написать на C++. Сириус курсы
- C++ // Обьясните пж этот код
- Помогите пж написать код на C++
- С++. Спросил на cyberforum, хранятся ли ссылки в памяти или нет, очень сильное разногласие, ответьте пж
- Напишите пожалуйста код на 5 вариант очень простой я на 1 курсе вуза и нужен простой код.
- Помогите дополнить код СИ, пж.
- Помогите с заданием по программированию, С++, напишите код для 1 курса
- ПрОВЕРьте код по программированию пж! С/С++
- Исправьте мой код, пж! Я не понемаю что не так!!! Задолбался! Я один сиджу по неделях на одной прогорамкой? Спасибо!
- Нужен код на Си помогите пж