Данный фрагмент программы определяет является ли число P палиндромом
Объяснение:
<u>while N <> 0 do</u>
<u>begin</u>
<u>K := K * 10 + N mod 10;</u>
<u>N := N div 10; </u>
<u>end;</u>
Этот цикл записывает в переменную K перевёрнутый вариант числа P
<u>if P = K then Writeln('да') else Writeln('нет');</u>
Это условие истинно, если исходный вариант числа равен перевёрнутому
Uses crt;
var
n,p:integer;
begin
writeln('Введите число: ');
readln(n);
p:=1;
while n>=10 do begin
p:=p*(n mod 100 div 10);
n:=n div 100;
end;
writeln('p = ',p);
end.
Пример:
Введите число:
236584
p = 96
В основу решения возьму тот факт, что точка лежит внутри треугольника только в том случае, если сумма площадей трех образованных этой точкой и вершинами треугольников треугольников равна площади самого треугольника. Для нахождения площади треугольников использую формулу векторного произведения, деленного пополам.
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main() {
int x1, y1, x2, y2, x3, y3, x0, y0;
scanf("%d%d%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3, &x0, &y0);
if (abs((x1 - x0) * (y2 - y0) - (x2 - x0) * (y1 - y0)) +
abs((x1 - x3) * (y0 - y3) - (x0 - x3) * (y1 - y3)) +
abs((x0 - x3) * (y2 - y3) - (x2 - x3) * (y0 - y3)) ==
abs((x1 - x3) * (y2 - y3) - (x2 - x3) * (y1 - y3)))
{
printf("YES");
} else {
printf("NO");
}
return 0;
}<span />
1) в 3 раза, так как чтобы закодировать 512 цветов нужно 9 знаков - 9 бит, а на 8 - 3 знака - 3 бит. Путём несложных вычисление 9/3 = 3
2) 128*128 = 16384 точки нужно закодировать. 4 кбайт - 32768 бит. 32768/16385 = 2 бита. А с помощью 2-х бит можно закодировать 4 цвета.