Вопрос задан 09.06.2023 в 19:22. Предмет Информатика. Спрашивает Карманов Кирилл.

Напишите пожалуйста программу С++ (с использованием функций и циклов) Задача : Последовательный

поиск Дано натуральное число N: 1) запишите N как сумму кубов трех различных чисел например, N=160 ---> 2*2*2 ; 3*3*3 и т.д. 2) найдите все пифагорейские тройки, каждая из которых меньше N например, N=10, ---> 3, 4, 5, 6, 8, 10 3) найти и вывести на экран все способы оплаты суммы N центов монетами достоинством 2, 5 и 10 центов. например, N=15 ---> 5+10; 5+5+5; 2+2+2+2+5 4) Из проволоки длиной N нужно отрезать куски длиной 2,5 и 9. Количество кусков каждой длины может быть любым (включая ноль). Необходимо найти оптимальный отрезок с минимальным количеством отрезков. Например, L=21 --> 1 *2+2*5+1*9
0 0
Перейти к ответам

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

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

Ответ:

#include <iostream>

#include <vector>

#include <cmath>

// Функция для проверки, является ли число кубом целого числа

bool is_cubic(int n)

{

   int root = round(pow(n, 1.0 / 3));

   return root * root * root == n;

}

// Функция для поиска пифагорейских троек

void find_pythagorean_triples(int n)

{

   for (int a = 1; a < n; a++)

   {

       for (int b = a; b < n; b++)

       {

           for (int c = b; c < n; c++)

           {

               if (a * a + b * b == c * c && c < n)

               {

                   std::cout << a << ", " << b << ", " << c << std::endl;

               }

           }

       }

   }

}

// Функция для нахождения всех способов оплаты суммы N монетами достоинством 2, 5 и 10 центов

void find_ways_to_pay(int n, std::vector<int> &coins, std::vector<int> &counts, std::vector<int> &solution)

{

   if (n == 0)

   {

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

       {

           std::cout << solution[i] << " ";

       }

       std::cout << std::endl;

       return;

   }

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

   {

       if (n >= coins[i] && counts[i] > 0)

       {

           counts[i]--;

           solution.push_back(coins[i]);

           find_ways_to_pay(n - coins[i], coins, counts, solution);

           counts[i]++;

           solution.pop_back();

       }

   }

}

// Функция для нахождения минимального количества отрезков

int find_min_pieces(int n, int a, int b, int c)

{

   int count_a = n / a;

   int min_count = count_a;

   for (int i = count_a; i >= 0; i--)

   {

       int remainder = n - i * a;

       int count_b = remainder / b;

       for (int j = count_b; j >= 0; j--)

       {

           remainder = n - i * a - j * b;

           int count_c = remainder / c;

           int total_count = i + j + count_c;

           if (total_count < min_count)

           {

               min_count = total_count;

           }

       }

   }

   return min_count;

}

int main()

{

   // Задаем значение n

   int n = 160;

   // 1. Находим сумму кубов трех различных чисел

   for (int i = 1; i < n; i++)

   {

       for (int j = i; j < n; j++)

       {

           for (int k = j; k < n; k++)

           {

               if (i != j && i != k && j != k && i * i * i + j * j * j + k * k * k == n)

               {

                   std::cout << i << "^3 + " << j << "^3 + " << k << "^3 = " << n

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

Конечно! Вот пример программы на C++, решающей задачу последовательного поиска, описанную вами:

cpp
#include <iostream> #include <vector> using namespace std; // Функция для проверки, является ли число кубом другого числа bool isCube(int n) { int cubeRoot = round(cbrt(n)); return (cubeRoot * cubeRoot * cubeRoot == n); } // Функция для поиска суммы кубов трех различных чисел, равной заданному числу void findSumOfCubes(int N) { bool solutionFound = false; for (int a = 1; a < N; a++) { for (int b = a + 1; b < N; b++) { for (int c = b + 1; c < N; c++) { if ((a * a * a + b * b * b + c * c * c) == N) { cout << "Сумма кубов трех различных чисел, равная " << N << ": " << a << "^3 + " << b << "^3 + " << c << "^3" << endl; solutionFound = true; } } } } if (!solutionFound) cout << "Решение не найдено." << endl; } // Функция для поиска и вывода на экран всех пифагорейских троек, меньших заданного числа void findPythagoreanTriplets(int N) { bool solutionFound = false; for (int a = 1; a < N; a++) { for (int b = a; b < N; b++) { for (int c = b; c < N; c++) { if ((a * a + b * b == c * c) && c < N) { cout << a << ", " << b << ", " << c << endl; solutionFound = true; } } } } if (!solutionFound) cout << "Пифагорейские тройки не найдены." << endl; } // Функция для нахождения и вывода на экран всех способов оплаты суммы монетами void findPaymentOptions(int N) { vector<int> coins = {2, 5, 10}; vector<int> payment; int remainingAmount = N; while (remainingAmount > 0) { int selectedCoin = -1; for (int i = coins.size() - 1; i >= 0; i--) { if (coins[i] <= remainingAmount) { selectedCoin = i; break; } } if (selectedCoin == -1) break; payment.push_back(coins[selectedCoin]); remainingAmount -= coins[selectedCoin]; } if (remainingAmount == 0) { cout << "Способы оплаты " << N << " центов:" << endl; for (int i = 0; i < payment.size(); i++) { cout << payment[i]; if (i != payment.size() - 1) cout << " + "; } cout << endl; } else { cout <<
0 0

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

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

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