#include <iostream>
#include <vector>
/*
Определить существуют ли в первом массиве такие два элемента,
что их сумма равна сумме каких-либо трёх элементов второго массива
*/
#define DEBUG // для себя.
int main()
{
int
size1,
size2;
std::cout << "Введите размер 1-го массива(вектора): " << std::endl;
std::cin >> size1;
std::cout << "Введите размер 2-го массива(вектора): " << std::endl;
std::cin >> size2;
int* arr1 = new int[size1];
int* arr2 = new int[size2];
for(int i = 0; i < size1; i++)//инициализируем значения первого массива с клавиатуры
std::cin >> arr1[i];
for(int i = 0; i < size2; i++)//инициализируем значения второго массива с клавиатуры
std::cin >> arr2[i];
int
sum1(0),//сумма двух элементов 1го массива
sum2(0);//сумма двух элементов 2-го массива
for(int i = 0; i < size1; i++)
{
for(int j = 1; j < size2-1; j++)
{
if(i == j) continue;
sum1 = arr1[i] + arr1[j];
for(int ii = 0; ii < size2; ii++)
{
for(int jj = 0; jj < size2; jj++)
{
for(int ff = 0; ff < size2; ff++)
{
if(ii == jj || jj == ff || ii == ff) continue;
sum2 = arr2[ii] + arr2[jj] + arr2[ff];
if(sum1 == sum2)
{
std::cout << "Существует." << std::endl;
#if defined DEBUG
std::cout << arr1[i] << " " << arr1[j] << std::endl;
std::cout << arr2[ii] << " " << arr2[jj] << " " << arr2[ff] << std::endl;
#endif
delete[] arr1;
delete[] arr2;
return 0;
}
}
}
}
}
}
std::cout << "Не существует." << std::endl;
delete[] arr1;
delete[] arr2;
return 0;
}
1) Пронумеровать числа справа налево, начиная с нуля, то есть вот так
2) Далее есть вот такая формула: число*систему исчисления в степени номера этого числа, то есть
А, ну и еще стоит добавить что в 16 системе исчисления есть цифры от 0 до 9 и буквы от A до F, соответственно A=10,B=11,C=12,D=13,E=14,F=15
С восьмиричной системой исчисления все аналогично
1) Нумеруем числа справа налево, начиная с 0
2) Опять пользуемся нашей формулой
А вот число 28 уже перевести нельзя, потому что восьмеричная система счисления содержит только цифры от 0 до 7 (всего 8 цифр, соответственно названию системы счисления)
Формула выше применима ТОЛЬКО для перевода из любой системы счисления в десятичную
Теперь переведем из десятичной системы в двоичную. Для этого тоже есть своя формула: делим переводимое число (в десятичной системе счисления) на основание системы счисления, в которую мы хотим перевести число и записываем остатки, пока в результате деления не получим ноль. Сейчас разберем по порядку:
1) Переводим из десятичной системы В ДВОИЧНУЮ. То есть основание системы счисления, в которую мы переводим число - 2
1093/2=546 (остаток 1) - в результате деление должно быть обязательно целое число, записываем остаток. Результат опять делим на основание системы счисления, в которую переводим (2)
546/2=273 (остаток 0)
273/2=136 (остаток 1)
136/2=68 (остаток 0)
68/2=34 (остаток 0)
34/2=17 (остаток 0)
17/2=8 (остаток 1)
8/2=4 (остаток 0)
4/2=2 (остаток 0)
2/2=1 (остаток 0) - делим до тех пор, пока в результате не получим ноль, так что еще одно действие
1/2=0 (остаток 1) - вот теперь все
Теперь запишем остатки в обратном порядке
10001000101 - это и есть ответ
Последнее задание совмещает все знания, которые ты получила выше. Сначала нужно перевести число из 16-ричной системы счисления в десятичную (нумеруешь числа справа налево, затем умножаешь на систему счисления в степени номера числа), а затем так же делением переводишь в двоичную систему счисления. Если ты это сделаешь, значит ты все поняла, если нет, то пиши мне разобраться.