Исполнитель Вычислитель получает на вход целое число и может выполнять над ним следующие действия: 1. Прибавь 1 прибавляет к числу на экране 1
2. Умножь на 2 - увеличивает число на экране в 2 раза
3. Умножь на 3 -Увеличивает число на экране в 3 раза
За какое минимальное количество действий исполнитель Вычислитель может получить из числа число ?
var
i,n:integer;
x,p:double;
begin
Write('Введите основание (x) и показатель степени (n): ');
Read(x,n);
if x=0 then p:=0
else begin
p:=1;
for i:=1 to Abs(n) do p:=p*x;
if n<0 then p:=1/p
end;
Writeln(x,'^',n,'=',p)
end.
Тестовые решения:
Введите основание (x) и показатель степени (n): 2 30
2^30=1073741824
Введите основание (x) и показатель степени (n): -3.35 9
-3.35^9=-53137.7624927636
Введите основание (x) и показатель степени (n): 18.3 -4
18.3^-4=8.9165251950717E-06
Программа (язык Pascal ABC.Net)
var i1,i2,i3:integer;
i:integer;
curr,minr,lastmax:integer;
begin
readln(i1,i2);
i:=2;
minr:=1000000;
repeat
readln(i3);
if (i2>i1) and (i2>i3) and (i3<>0) then begin
curr:=i-lastmax;
if curr<minr then minr:=curr;
lastmax:=i;
end;
i1:=i2;
i2:=i3;
i+=1;
until i2=0;
if minr=1000000 then writeln(0) else writeln(minr); {стоило бы добавить булевую переменную в качестве флага - был ли хоть один max, но вряд ли расстояние между ними превысит миллион :-}
end.