Цвета: белый синий красный зелёный
Квадрат : белый синий красный зелёный
Круг: белый синий красный зелёный
Ромб: белый синий красный зелёный
Треугольник: белый синий красный зелёный
Круг не белый и не зелёный; Треугольник не синий и не зелёный
Квадрат : белый синий красный зелёный
Круг: синий красный
Ромб: белый синий красный зелёный
Треугольник: белый красный
Синяя фигура лежит между ромбом и красной фигурой.
Квадрат лежит между треугольником и белой фигурой
Ромб: белый
Квадрат : синий
Треугольник: красный
Круг: синий красный (Зелёный ? => Неверно)
Синяя фигура лежит между ромбом и красной фигурой.
Квадрат лежит между треугольником и белой фигурой
//Ромб
Квадрат : зелёный
Треугольник: красный
Круг: синий
Ромб: белый
Var a,b,c:integer;
begin
read(a,b,c);
if (a<b) and (a<c) then
writeln(a);
if (b<a) and (b<c) then
writeln(b);
if (c<a) and (c<b) then
writeln(c);
end.
Линии пересекаются в точках, где их уравнения при одинаковых аргументах возвращают одинаковые значения. Чтобы определить условия точек пересечения заданных уравнений линий
следует приравнять их правые части и решить полученное уравнение относительно аргумента х.
Сделаем подстановку и получим квадратное уравнение:
Далее находим дискриминант, проверяем его знак, производим ветвление алгоритма в зависимости от результата. При неотрицательных t определяем х, извлекая из t квадратный корень и для каждого х вычисляем у из второго уравнения (оно короче).
var
a, b, c, d, f, m, p: real;
function y(x: real): real;
begin
y := b * x * sqr(x) + m * sqr(x) + d * x + p
end;
procedure OutPoint(x: real);
begin
writeln('Найдена точка пересечения функций (', x, ',', y(x), ')')
end;
procedure TDev(t: real; var np: Boolean);
var
x: real;
begin
if t = 0 then begin
np := false;
OutPoint(0)
end
else if t > 0 then begin
np := false;
x := -sqrt(t);
OutPoint(x);
x := sqrt(t);
OutPoint(x)
end
end;
var
x1, x2, u, v, t1, t2, Dis: real;
NoPoints: Boolean;
begin
writeln('Введите значения переменных a,b,c,d,f,m,p');
readln(a, c, f, m, p);
u := c - m;
v := f - p;
Dis := sqr(u) - 4 * a * v;
NoPoints := true;
if Dis = 0 then begin
t1 := -u / (2 * a);
TDev(t1,NoPoints);
end
else begin
t1 := (-u - sqrt(Dis)) / (2 * a);
TDev(t1,NoPoints);
t2 := (-u + sqrt(Dis)) / (2 * a);
TDev(t2,NoPoints);
end;
if NoPoints then writeln('Общих точек пересечения нет')
end.
Тестовое решение
Введите значения переменных a,b,c,d,f,m,p
2 3 4 5 6 7 8
Найдена точка пересечения функций (-1.27201964951407,14.0901699437495)
Найдена точка пересечения функций (1.27201964951407,14.0901699437495)
Введите значения переменных a,b,c,d,f,m,p
-3 -5 -3 2 1 4 5
Общих точек пересечения нет
7.
N=2^i;
N=32
i=5;
512*256*5=655360/8=81920/1024=80кбайт
8.
N=16
i=4
512*128*4=262144/8=32768/1024=32кбайт
9.
N=8
i=3
256*128*3=98304/8=12288/1024=12кбайт
10.
N=256
i=8
128*128*8=131072/8=16384/1024=16кбайт