
Напишите пожалуйста программу С++ (с использованием функций и циклов) Задача : Последовательный
поиск Дано натуральное число 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

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

Ответ:
#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



Конечно! Вот пример программы на 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 <<


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







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili