Эти прямые, записанные как функции f(x):
f1(x) = ax + b
f2(x) = cx + d
В точке пересечения прямых значения функций равны. Поэтому, приравняем их друг другу и решим получившееся уравнение:
ax + b = cx + d
ax - cx = d - b
(a - c)*x = d - b
x = (d - b) / (a - c)
Так находится координата икс точки пересечения. Далее находится игрек простой подстановкой найденного значения икс в любую из двух исходных функций (пускай в первую функцию).
Также, возможны частные случаи, которые надо предусмотреть в программе:
1) Если a = c но b ≠ d. Такие прямые параллельны друг другу, и не имеют точек пересечения. При попытке решения уравнения (см.выше) иксы сократятся, и получится всегда (при любом икс) неверное равенство вида 0 = b - d.
2) Если a = c и b = d. То есть, были введены одинаковые уравнения прямых (задана дважды одна и та же прямая, т.е. все точки этих уравнений совпадают). При попытке решения уравнения (см.выше) иксы сократятся, и b, d -тоже, и получится всегда (при любом икс) верное равенство вида 0 = 0.
Сама программа (на Паскале):
var
x, y, a, b, c, d: real;
begin
Writeln('Ввод коэффициентов уравнений двух прямых:');
Write('a= ');
Read(a);
Write('b= ');
Read(b);
Write('c= ');
Read(c);
Write('d= ');
Read(d);
if a = c then
begin
if b = d then
Writeln('Задана дважды одна и та же прямая. Все точки совпадают.')
else
Writeln('Заданы параллельные прямые. Точек пересечения нет.');
exit
end;
x := (d - b) / (a - c);
y := a * x + b;
Writeln('Координаты точки пересечения прямых:');
Writeln('x= ', x);
Writeln('y= ', y);
end.
Ах ты ж мелкий, сам КБО написать не можешь?) - это приговор.
Объяснение:
#include <bits/stdc++.h>
using namespace std;
int cnt[30], kol;
string s;
bool check (int mid) {
int x[30]{}, y = 0;
for (int i = 0; i < mid; i++) {
x[s[i] - 'a' + 1]++;
if (x[s[i] - 'a' + 1] == 1)
y++;
}
int l, r = mid - 1;
for (l = 0; r < s.size();) {
if (y == kol)
return true;
if (x[s[l] - 'a' + 1] == 1)
y--;
x[s[l] - 'a' + 1]--;
l++;
r++;
if (x[s[r] - 'a' + 1] == 0)
y++;
x[s[r] - 'a' + 1]++;
}
return false;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> s;
for (auto it : s)
cnt[it - 'a' + 1]++;
for (int i = 1; i <= 26; i++) {
if (cnt[i] > 0)
kol++;
}
int l = 0, r = s.size();
while (r - l > 1) {
int mid = l + (r - l) / 2;
if (check (mid))
r = mid;
else
l = mid;
}
cout << r;
}
блок-схема - скрин 1
program z;
var x,y:real;
begin
write('x = ');
readln(x);
y:=2*(x + abs(sqr(x-1)));
write('y = ',y:0:1)
end.
результат - скрин 2
Объяснение:
вводим x
вычисляем y
выводим y