#include <windows.h>
#include <string>
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
int main(int argc, char **argv)
{
system("chcp 1251 > nul"); // Руссификация сообщений
setlocale(LC_ALL, "Russian");
vector <int> A;
vector <int> B;
vector <int> C;
//3 4 4 3
//2 1 3
//1 2 2 1
//2 3 1 2
int a,b,c,d,k;
cin >> a >> b >> c >> k;
for (int i=0; i<a; i++) { cin >> d; A.push_back(d); }
for (int i=0; i<b; i++) { cin >> d; B.push_back(d); }
for (int i=0; i<c; i++) { cin >> d; C.push_back(d); }
cout << endl;
for (int i=0; i<a; i++) { cout << A[i] << '\t'; }
cout << endl;
for (int i=0; i<b; i++) { cout << B[i] << '\t'; }
cout << endl;
for (int i=0; i<c; i++) { cout << C[i] << '\t'; }
cout << endl;
for (int i=0; i<a; i++) { A[i]*=A[i]; }
for (int i=0; i<b; i++) { B[i]*=B[i]; }
for (int i=0; i<c; i++) { C[i]*=C[i]; }
cout << endl;
for (int i=0; i<a; i++) { cout << A[i] << '\t'; }
cout << endl;
for (int i=0; i<b; i++) { cout << B[i] << '\t'; }
cout << endl;
for (int i=0; i<c; i++) { cout << C[i] << '\t'; }
cout << endl;
//a^2+b^2+c^2=k
int q=0;
for (int aa=0; aa<a; aa++)
{
for (int bb=0; bb<b; bb++)
{
for (int cc=0; cc<c; cc++)
{
q= C[cc]+B[bb]+A[aa];
if (q==k)
{
cout << (aa+1) << '\t' << (bb+1) << '\t' << (cc+1) << endl;
return 0;
}
}
}
}
cout << endl << "Хелло Ворлд" << endl;
system("pause"); // system("pause > nul");
return 0;
}
проверяй
#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';
}
что для заданного числа К выполняется равенство а^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