Вопрос задан 23.06.2023 в 19:49. Предмет Информатика. Спрашивает Алексеева Настя.

С++ Сокращение последовательности Дана последовательность натуральных чисел. Найдите наибольший

общий делитель всех элементов последовательности и сократите все её члены на него. Решение оформите в виде функции bool isDivisor(vector &A, int d), проверяющей является ли число d общим делителем последовательности, и функции void reduction(vector &A), которая находит наибольший общий делитель и сокращает все члены последовательности на него. #include #include using namespace std; bool isDivisor(vector &A, int d) void reduction(vector &A) #место для кода 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 << A[i] << " "; } return 0; }
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Паньковець Женя.

{int g = 0;

  for (int i = 0; i < A.size(); i++) {

      if (A[i]%d == 0) g = 1;

      else {

      g = 0;

      break;}}

  if (g == 1) return true;

  return false;}

void reduction(vector<int> &A) {

  int d = 1;

  for (int i = A[0]; i >= 2; i--) {

      if (isDivisor(A,i)) {

          d = i;

          break;}}

  for (int i = 0; i < A.size(); i++) {

      A[i] = A[i] / d;}}

а ты решил 3ю и 7ую задачи? можешь скинуть?

0 0
Отвечает Маяцкий Виталий.

Ответ:

Объяснение:

#include <iostream>

#include <vector>

using namespace std;

bool isDivisor(vector<int> &A, int d) {

int g = 0;

for (int i = 0; i < A.size(); i++) {

if (A[i]%d == 0) g = 1; //если все элементы делятся на d то g сохранит единицу

else {

g = 0;

break; //если хотя бы один не поделился то прекращаем цикл и начинаем другой

}

}

if (g == 1) return true; //правда если все делятся

return false; //ложь если хотя бы один не поделился

}

void reduction(vector<int> &A) {

int d = 1; //НОД

for (int i = A[0]; i >= 2; i--) {

if (isDivisor(A,i)) {

d = i;

break; //НОД, если все элементы делятся на него

}

}

for (int i = 0; i < A.size(); i++) {

A[i] = A[i] / d; //делим все элементы на НОД

}

}

int main() {

int n;

cin >> n;

vector<int> A(n);

for (int i = 0; i < n; ++i){

cin >> A[i];

}

reduction(A);

for (int i = 0; i < A.size(); ++i){

cout << A[i] << " ";

}

return 0;

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи, вам нужно будет найти наибольший общий делитель (НОД) всех элементов последовательности и затем разделить каждый элемент на этот НОД. Вот как можно реализовать вашу задачу:

cpp
#include <iostream> #include <vector> using namespace std; // Функция для нахождения НОД двух чисел int gcd(int a, int b) { if (b == 0) { return a; } return gcd(b, a % b); } // Функция для проверки, является ли число d общим делителем последовательности A bool isDivisor(const vector<int>& A, int d) { for (int i = 0; i < A.size(); ++i) { if (A[i] % d != 0) { return false; } } return true; } // Функция для нахождения НОД всех элементов вектора A int findGCD(const vector<int>& A) { int result = A[0]; for (int i = 1; i < A.size(); ++i) { result = gcd(result, A[i]); } return result; } // Функция для сокращения всех элементов вектора A на НОД void reduction(vector<int>& A) { int gcdValue = findGCD(A); for (int i = 0; i < A.size(); ++i) { A[i] /= gcdValue; } } int main() { int n; cin >> n; vector<int> A(n); for (int i = 0; i < n; ++i) { cin >> A[i]; } reduction(A); for (int i = 0; i < A.size(); ++i) { cout << A[i] << " "; } return 0; }

Этот код сначала находит НОД всех элементов вектора A с помощью функции findGCD, затем сокращает каждый элемент вектора на этот НОД в функции reduction. Функция isDivisor необходима только для проверки, является ли число d общим делителем последовательности.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос