Egor ...
Гуру
(4395)
1 день назад
Давно не работал с плюсами, но если я всё правильно понял и помню, то как то так:
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
int n, m, t, k;
cin >> n >> m >> t >> k;
vector<int> a(n), b(m), c(t);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
for (int i = 0; i < m; ++i) {
cin >> b[i];
}
for (int i = 0; i < t; ++i) {
cin >> c[i];
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
for (int l = 0; l < t; ++l) {
if (pow(a[i], 2) + pow(b[j], 2) + pow(c[l], 2) == k) {
cout << i + 1 << " " << j + 1 << " " << l + 1 << endl;
return 0;
}
}
}
}
return 0;
}
Программа по очереди перебирает все возможные тройки чисел, по одному из каждого набора. Для каждой тройки вычисляется сумма их квадратов и сравнивается с заданным значением k. Если сумма квадратов равна k, то программа выводит индексы выбранных чисел (с нумерацией от 1) и завершается.
ПапаВысший разум (145105)
1 день назад
А теперь запусти это творение на n = m = t = 10000. Чиселки можешь сгенерировать программой, хоть все одинаковые (1 1 1 1 ...). Через год скажешь, сколько успел перебрать.
что для заданного числа К выполняется равенство а^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