Алгоритм -это последовательность действий.Пример:Открывание двери.1 Взять ключ Подойти к двери.Засунуть ключ в замочную скважину.Повернуть ключ против часовой стрелке.И все)
Тут вот в чем дело. Импликация имеет такую таблицу истинности:
A | B | A->B
0 | 0 | 1
0 | 1 | 1
1 | 0 | 0
1 | 1 | 1
Если первое выражение ложно, то при любом втором выражении результат будет истинным.
0 -> (0 -> (x&A =/= 0)) = 1
0 -> (1 -> (x&A =/= 0)) = 1
То есть все выражение истинно при ЛЮБОМ А.
Поэтому нам нужно искать такие х, при которых 1 выражение истинно.
Если 1 выражение истинно, то результат будет истинным ТОЛЬКО если 2 выражение тоже истинно. Но во 2 выражении тоже импликация!
1 -> (0 -> (x&A =/= 0)) = 1 -> 1 = 1
1 -> (1 -> (x&A =/= 0)) = 1 только если (x&A =/= 0) истинно.
Теперь рассмотрим, при каких х первые два выражения ОБА истинны.
35 = 100011(2); 31 = 011111(2)
35 & 31 = 000011(2) = 3
Чтобы выражение
x&A =/= 0 было истинно, в числе А должна быть 1
в любом из двух младших битов в двоичном представлении.
Минимальное А = 1
#include <iostream>
#include <math.h>
using namespace std;
int main(){
int x1,y2,x2,y2, r1, r2;
cin >> x1 >> y1 >> endl; //вводим координаты первой точки
cin >> x2 >> y2 >> endl; //вводим координаты второй точки
r1 = sqrt(x1*x1 + y1*y1); //находим расстояние от первой
r2 = sqrt(x2*x2+y2*y2) //от второй
if (r1>r2){
cout << "Точка 1 ближе к началу координат";
}
else{
cout << "Точка 2 ближе к началу координат";
}
else if (r1=r2){
cout << "Эти точки равны"
}
return 0;
}
Var h1,h2,m1,m2,s1,s2,s:integer;
begin
write('Введите время первого события: ');
readln(h1,m1,s1);
write('Введите время второго события: ');
readln(h2,m2,s2);
s:=h2*3600+m2*60+s2-h1*3600-m1*60-s1;
writeln('Число секунд между ними: ',s);
<span>end.</span>