с с заданием:
Наруто пробрался в логово Орочимару и пытается найти Саске. В логове Орочимару есть T комнат. Каждая дверь в комнату характеризуется количеством печатей n на ней и целочисленными силами печатей a1, a2, ..an. Силы печатей ai не равны нулю и не превосходят 100 по модулю, а n всегда четно.
Для того чтобы открыть комнату, Наруто необходимо подобрать такие n печатей с целочисленными силами b1, b2, ..bn, чтобы a1⋅b1+a2⋅b2+...+an⋅bn=0. Силы печатей Наруто bi также должны быть ненулевыми (как и данные ai) и не превосходить 100 по модулю. Необходимо подобрать печати для всех комнат в логове.
Входные данные
В первой строке задано число T (1≤T≤1000) — количество комнат в логове Орочимару. В следующих строках содержатся описания дверей.
В первой строке описания каждой двери содержится четное число n (2≤n≤100) — количество печатей на двери.
В следующей строке содержится последовательность целых ненулевых чисел a1, a2, ..an через пробел (|ai|≤100, ai≠0) — силы печатей.
Выходные данные
Для каждой двери на отдельной строке необходимо вывести последовательность ненулевых целых чисел b1, b2, ..bn (|bi|≤100, bi≠0) через пробел — силы печатей, необходимые для открытия этой двери. Если есть несколько искомых последовательностей, выведите любую из них. Можно доказать, что ответ всегда существует.
ответ: Задание 1
#include <iostream>
#include <cmath>
double getArea(double side)
{
double S = pow(side, 2) * sqrt(3) / 4;
return S;
}
double getHeight(double side)
{
double H = sqrt(pow(side, 2) - pow(side, 2) / 4);
return H;
}
double getInR(double side)
{
double R = side / sqrt(12);
return R;
}
double getOutR(double side)
{
double R = side / sqrt(3);
return R;
}
int main()
{
double sideA = 3.5; // длина одной из сторон треугольника, произвольное число;
double area = getArea(sideA);
double height = getHeight(sideA);
double R1 = getInR(sideA);
double R2 = getOutR(sideA);
std::cout << "S = " << area << '\n' << "H = " << height << '\n' << "R1 = " << R1 << '\n' << "R2 = " << R2;
return 0;
}
Задание 4:
#include <iostream>
double Pow(double num, int power)
{
double n = num;
for (int i = 1; i < power; i++)
num *= n;
return num;
}
int main()
{
double a = Pow(2, 5); // 2^5=32
std::cout << a;
return 0;
}
Объяснение:
1) вводим с клавиатуры х, затем у. Вычисляем значение данного выражения в f. Выводим результат на экран:
x=int(input('x='))
y=int(input('y='))
f=not(x*y<0) and y>x
print(f)
2) Выводим на экран заголовки столбцов. Затем перебираем в циклах всевозможные значения х, у и z. Выводим их значения и значение логического выражения. На экране получим таблицу.
print('x','y','z', 'F')
for x in range(2):
for y in range(2):
for z in range(2):
print(x,y,z, x and not(not(y) or z) or y)
3) Ничего не придумал, кроме простого перебора всех вариантов:
(x and not(y) and not(z)) or (not(x) and y and not(z)) or (not(x) and not(y) and z)