Вс++
точки
на плоскости задано n точек. кроме того, на плоскости заданы две базовые точки.
напишите программу, которая находит максимальное количество точек, которые попадут в полосу, образованную парой параллельных прямых произвольно проведенных через базовые точки. базовые точки не нужно включать в сумму точек. если точка лежит на прямой – ее необходимо включить в сумму.
входные данные
первая строка содержит одно целое число n (0 ≤ n ≤ 1) - количество точек. вторая строка содержит координаты двух базовых точек в формате x1y1x2y2. каждая из последующих n строк содержит координаты точки плоскости в формате xy. координаты точек - целые числа, по модулю не превышающие 1. базовые точки отличаются, по крайней мере, одной координатой.
выходные данные
вывести одно целое число - найденное максимальное количество точек, которые попадут в полосу, образованную оптимально проведенными параллельными прямыми через базовые точки.
var m:array [0..14] of integer; i:integer;
function IsPositive(a:integer):boolean;
begin
result:=(a>-1);
end;
procedure work;
var min, max, count:integer;
begin
count:=0;
min:=m[0];
max:=0;
for i:=0 to 14 do begin
if IsPositive(m[i]) then begin
inc(count);
if m[i]>max then max:=m[i];
if m[i]<min then min:=m[i];
end;
end;
writeln('MAX: ', max);
writeln('MIN: ', min);
writeln('Count: ', count);
end;
begin
for i:=0 to 14 do begin
write('n: ');
readln(m[i]);
end;
work;
readln;
end.
Если число 3306(10) в системе исчисления с основанием а заканчивается цифрой 3, то тогда
число 3303 делится на основание системы а.
Отсюда алгоритм поиска. Находим все делители числа 3303.
3303 = 3*1101 = 3*3*367. Число 367 - простое. Поэтому основаниями системы исчисления
могут быть только 3, 9, 367. Основание =3 не подходит, так как по условию число должно заканчиваться на 3 -> основание больше 3. Остаются 9, 367.