Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Прошу помогите с С++

Leyla Nuriyeva Ученик (118), открыт 2 дня назад
У нас есть три набора чисел - А, В и С. Можно ли взять из каждого набора по одному числу а, b и с так,
что для заданного числа К выполняется равенство а^2 + b^2 + c^2 = k?
В первой строке записаны четыре натуральных числа n, m, t и к - размеры каждого из трех наборов и число k
Выведите три числа: номера чисел из каждого набора согласно заданному во входных данных порядку, которые
подходят под указанное равенство. Нумерация чисел в наборах начинается с единицы. Если правильных ответов
несколько, то выведите любой из них.


Вход
3 4 4 3
2 1 3
1 2 2 1
2 3 1 2
Вывод
2 1 3
3 ответа
Волк Чёрный Ученик (180) 2 дня назад
Вот решение задачи на языке C++:


Этот код считывает размеры каждого набора и число , создает векторы для хранения чисел в каждом наборе, перебирает все возможные комбинации чисел из каждого набора и проверяет, удовлетворяют ли они заданному уравнению. Если подходящая комбинация найдена, она выводится на экран. Если подходящих комбинаций нет, выводится сообщение "No solution".
Leyla NuriyevaУченик (118) 2 дня назад
это гпт ????????? код не подходит
Волк Чёрный Ученик (180) Leyla Nuriyeva, кода нет
Волк ЧёрныйУченик (180) 2 дня назад
Ты как его увидел?
Ксения Райт Гений (99858) 2 дня назад
Просто же всё!
 #include <cmath> 
#include <vector>
#include <iostream>

using namespace std;

int main()
{
int aa, i, j, l, n, m, t, k, s, q;
cin >> n >> m >> t >> k;
vector <int> A(n);
vector <int> B(m);
vector <int> C(t);
for (i = 0; i < n; ++i) cin >> A[i];
for (j = 0; j < m; ++j) cin >> B[j];
for (l = 0; l < t; ++l) cin >> C[l];
for (i = 0; i < n; ++i)
{
s = k - A[i] * A[i];
if (s < 0) continue;
for (j = 0; j < m; ++j)
{
s -= B[j] * B[j];
if (s < 0) continue;
q = sqrt(s);
for (l = 0; l < t; ++l)
if (C[l] == q || C[l] == -q)
{
cout << i + 1 << ' ' << j + 1 << ' ' << l + 1<< endl;
return 0;
}
}
}
}
Leyla NuriyevaУченик (118) 1 день назад
извините , код не проходить , Исправьте пожалуйста
Ксения Райт Гений (99858) У Вас что-то не работает или неэффективно работает, или работает с использованием запрещённых конструкций (например, контейнеров типа vector, которыми почему-то нельзя пользоваться)? Уж будьте добры - сообщите: мне аж самой вдруг стало чертовски интересно что же это тут не так, если всё везде прекрасно (а главное - корректно) работает! Кстати, некий Николай Веселуха ответил Вам на Ваш вопрос целых 12 раз! У него что - тоже, как Вы говорите, "код не проходить"? Если да - то забаньте его, просто прожав дизлайки ?? всей его дюжине ответов, а с Вами тогда будем решать всё в индивидуальном порядке. А если нет, то тогда вопрос целиком и полностью исчерпан!
Николай Веселуха Высший разум (370961) 1 день назад
 #include <array> 
#include <iostream>
#include <map>

using namespace std;

class SumSquares {
private:
static const size_t length = 3;
public:
using key_t = unsigned;
using value_t = size_t;
using map_t = map<key_t, value_t>;
using box_t = array<map_t, length>;
using item_t = pair<key_t, value_t>;
using result_t = pair<bool, array<item_t, length>>;
using values_t = array<value_t, length>;
private:
key_t target = 0;
box_t box;
map_t fill(istream& inp, const value_t count) {
map_t item;
key_t key;
for (value_t value = 0; value < count; ++value) {
inp >> key;
if (!item.contains(key) && key * key < target) {
item.insert({ key, value + 1 });
}
}
return item;
}
static bool is_not_exists(key_t key) {
while (key % 4 == 0) key /= 4;
return key % 8 == 7;
}
bool is_exists(const key_t a, const key_t b, const key_t c) const {
return target == a * a + b * b + c * c;
}
result_t result() const {
result_t res{};
for (const auto& a : box[0]) {
res.second[0] = a;
for (const auto& b : box[1]) {
res.second[1] = b;
for (const auto& c : box[2]) {
res.second[2] = c;
if (is_exists(a.first, b.first, c.first)) {
res.first = true;
return res;
}
}
}
}
return res;
}
friend istream& operator>>(istream& inp, SumSquares& ss) {
values_t values{};
for (auto& value : values) inp >> value;
inp >> ss.target;
size_t i = 0;
for (auto& item : ss.box) {
item = ss.fill(inp, values[i]);
++i;
}
return inp;
}
friend ostream& operator<<(ostream& out, const SumSquares& ss) {
if (SumSquares::is_not_exists(ss.target)) return out << "-1";
const auto& [status, result] = ss.result();
if (!status) return out << "-1";
for (const auto& [key, value] : result) out << value << ' ';
return out;
}
};

int main() {
SumSquares sum_squares;
cin >> sum_squares;
cout << sum_squares << '\n';
}
Похожие вопросы