Var n, k, d2, d1, d0: integer; e2, e1, e0: integer;
procedure GetDigits(m: integer; var d2, d1, d0: integer); {Перевод числа [100..FFF]в 16-ю систему счисления} begin d0 := m mod 16; m := m div 16; d1 := m mod 16; d2 := m div 16 end;
begin n := 0; {Рассматриваем шестнадцатиричные числа от 100 до 7FF} for k := $100 to $7FF do begin GetDigits(k, d2, d1, d0); if (d2 = 2) or (d1 = 2) or (d0 = 2) then begin GetDigits(2 * k, e2, e1, e0); if d0 + d1 + d2 = e0 + e1 + e2 then n := n + 1 end end; writeln('n=', n) end.
begin write('Введите значение первого члена прогрессии, a='); readln(a); write('Введите значение разности прогрессии, d='); readln(d); write('Введите количество членов прогрессии, n='); readln(n); writeln('Значения членов прогрессии:'); for i := 1 to n do write(a + d * (i - 1), ' ') end.
Тестовое решение:
Введите значение первого члена прогрессии, a=4 Введите значение разности прогрессии, d=2 Введите количество членов прогрессии, n=6 Значения членов прогрессии: 4 6 8 10 12 14
n, k, d2, d1, d0: integer;
e2, e1, e0: integer;
procedure GetDigits(m: integer; var d2, d1, d0: integer);
{Перевод числа [100..FFF]в 16-ю систему счисления}
begin
d0 := m mod 16;
m := m div 16;
d1 := m mod 16;
d2 := m div 16
end;
begin
n := 0;
{Рассматриваем шестнадцатиричные числа от 100 до 7FF}
for k := $100 to $7FF do
begin
GetDigits(k, d2, d1, d0);
if (d2 = 2) or (d1 = 2) or (d0 = 2) then
begin
GetDigits(2 * k, e2, e1, e0);
if d0 + d1 + d2 = e0 + e1 + e2 then n := n + 1
end
end;
writeln('n=', n)
end.
Тестовое решение:
n=23
a, d: real;
i, n: integer;
begin
write('Введите значение первого члена прогрессии, a=');
readln(a);
write('Введите значение разности прогрессии, d=');
readln(d);
write('Введите количество членов прогрессии, n=');
readln(n);
writeln('Значения членов прогрессии:');
for i := 1 to n do
write(a + d * (i - 1), ' ')
end.
Тестовое решение:
Введите значение первого члена прогрессии, a=4
Введите значение разности прогрессии, d=2
Введите количество членов прогрессии, n=6
Значения членов прогрессии:
4 6 8 10 12 14