Делим число в десятичной системе на основание числа, которое мы хотим получить, то есть на 2:
200 / 2 = 100 (0), где 0 - это остаток. Действительно, 2 · 100 + 0 = 200
100 / 2 = 50 (0)
50 / 2 = 25 (0)
25 / 2 = 12 (1), 2 · 12 + 1 = 24 + 1 = 25. Это можно представить так: у Вас есть 25 яблок и 2 друга, между которыми нужно поровну разделить все яблоки. Вы можете обоим дать только по 12 яблок, а останется 1. Это и будет остаток.
12 / 2 = 6 (0)
6 / 2 = 3 (0)
3 / 2 = 1 (1)
1 / 2 = 1 (1), применим на том же примере с яблоками: у нас есть одно яблоко и 2 друга, а нужно разделить количество яблок поровну, не деля яблоко пополам. У Вас сделать это не получится, поэтому у Вас остаётся 1 яблоко, то есть остаток.
Теперь "собираем" остатки снизу вверх:
11001000₂ - это и будет наш двоичный код.
ответ11001000
x2, y2 - конец отрезка
x0, y0 - координаты точки принадлежность которой мы будем проверять
Вывод будет True, если принадлежит, False, если не принадлежит.
Программа:
program fff;
const _Eps: Real = 1e-3;
var x0, y0, x1, y1, x2, y2 : real; tmp : boolean; begin
readln(x1, y1); readln(x2, y2); readln(x0, y0); tmp := ((x0 - x1) * (y2 - y1) - (y0 - y1) * (x2 - x1)) <= _Eps; tmp := tmp and ( ((x1 < x0) and (x0 < x2)) or ((x2 < x0) and (x0 < x1)) ); write(tmp); end.