Помощь - Поиск - Пользователи - Календарь
Полная версия: массив из степеней 5
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Athen
Такая задача: Даны натуральное число n, целые числа a1,…,an. Рассмотреть отрезки последовательности a1,…,an (последовательности идущих подряд членов), состоящие из степеней пятерки. Получить наибольшую из длин рассматриваемых отрезков.


Program zadacha2;
Uses crt;
function stepen(b,n:integer):longint;
var
S:longint;
i:integer;
begin
S:=1;
for i:=1 to n do
S:=S*b;
stepen:=S;
end;
Var i,n,m,c,max:integer;
a:array [1..10] of longint;
Begin
Clrscr; max:=0; c:=1;
for i:=1 to 10 do begin
writeln('Vvedite a[i]');
readln(a[i]);
writeln('a[',i,']=',a[i]);
for n:=1 to 10 do begin
if a[i]=stepen(5,n) then
for m:=1 to 10 do begin
if a[i-1]=stepen(5,m) then c:=c+1;
if c>max then max:=c;end;end;end;
writeln('naibolshij otrezok =',max);
readln;
End.


Загвоздка в том, что прога считает ВСЕ элементы из степеней 5.
Помогите исправить пожалуста! Заранее огромное спасибо!
мисс_граффити
так?
uses crt;
function IsPower(const n: integer):boolean;
var test: integer;
res: boolean;
begin
test:=n;
res:=test>0;
while (test>1) and res do
if (test mod 5)=0 then
test:=test div 5
else
res:=false;
IsPower:=res;
end;

const n=30;
var
i,max,curr: integer;
a: array[1..n] of integer;
begin
clrscr;
randomize;
curr:=0;
max:=0;
for i:=1 to n do
begin
a[i]:=random(10);
if IsPower(a[i]) then
inc(curr)
else
begin
if max<curr then
max:=curr;
curr:=0;
end;
write(a[i],' ');
end;
if curr>max then
max:=curr;
writeln;
writeln(max);
readln;
end.
klem4
 function IsPower(n: integer):boolean;
begin
while ((n > 1) and (n mod 5 = 0)) do n := n div 5;
isPower := n = 1;
end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.