Это блок схема перевода числа из 10 формата в число с
основанием 2
<span>В приложении алгоритм на Excel VBA программу можно посмотреть Alt+F11
</span>
// PascalABC.NET 3.0, сборка 1157 от 02.02.2016
begin
var a:array[1..20] of integer;
Randomize;
for var i:=1 to 20 do a[i]:=Random(-50,50); a.Println;
var b:=Range(2,20,2).Select(i->a[i]);
Writeln('Элементы с четными индексами по возрастанию');
b.Sorted.Println;
Writeln('Элементы с четными индексами по убыванию');
b.SortedDescending.Println;
end.
<u><em>Тестовое решение:</em></u>
-15 46 -34 -3 43 16 -17 -28 -19 12 -28 -11 48 -12 -1 33 -37 9 6 -40
Элементы с четными индексами по возрастанию
-40 -28 -12 -11 -3 9 12 16 33 46
Элементы с четными индексами по убыванию
46 33 16 12 9 -3 -11 -12 -28 -40
Если A, B имеют общий делитель d, то и A + B делится на d. Отсюда идея: найдем наибольший делитель N, меньший N, и представим всё в виде d + (N - d). d будем искать так: найдём наименьший делитель q, не равный 1 (если число составное, он не больше корня из N), тогда d = N/q.
var
q, d, n: longint;
isfound: boolean;
begin
readln(n);
isfound := false;
for q := 2 to trunc(sqrt(n)) + 1 do
if n mod q = 0 then
begin
d := n div q;
write(d, ' ', n - d);
isfound := true;
break;
end;
if not isfound then
write(1, ' ', n - 1);
end.
var B:array [1..1000] of real;
c:integer;d:real;
begin
writeln('Vvedite N=');read(a);
d:=0;
for c:=1 to n do
if(c mod 2= 0) then d:=d+b[c];
b[n]:=d;writeln(b[n]);readln;readln;
end;