var
n:word;
a,i,k:integer;
begin
while (n<=0) or (n>1000) do begin
write ('0<N<=1000 ');readln(n);
end;
repeat
readln(a);
if a mod 10 = 3 then k:=k+1;
i:=i+1;
until i=n;
writeln ('');
writeln (k);
readln;
end.
37
Объяснение:
В массиве n + 1 элемент (n = 10),
цикл выполняется n раз
В цикле переменная s увеличивается на A[i] - A[i+1] + 2
Прибавка на 2 даст суммарную прибавку 20, а вот прибавка элементов получится такая, все элементы кроме первого и последнего сложатся сначала со знаком "-", потом "+", и они будут равны 0, останется только A[0] - A[n]
Поскольку массив - возрастает, то эта прибавка - отрицательная, нам нужно сделать её как можно больше.
Для этого нужно, чтобы элементы массива отличались на 1,
например, 0, 1, 2, 3, ..., n
Тогда A[0] - A[n] = -n, т.е. -10
27 + 20 - 10 = 37
xD
uses crt;
var
dt,t1,t2:LongInt;
function GetTime:LongInt;
var
substr,str:string;
ERR,step,spacepos,code,num:Integer;
t:longint;
begin
ERR:=0;
repeat
t:=0;
step:=1;
if ERR<>0 then writeln('Nepravilnie dannie, povtorite vvod:');
ERR:=0;
readln(str);
str:=str+' ';
repeat
spacepos:=pos(' ',str);
if (spacepos<>0) then
begin
substr:=copy(str,1,spacepos-1);
delete(str,1,spacepos);
val(substr,num,code);
if code=0 then
begin
if (step=1) then begin if (num>=0) and (num<=23) then t:=t+num*60*60 else ERR:=3; end;
if (step=2) then begin if (num>=0) and (num<=59) then t:=t+num*60 else ERR:=3;end;
if (step=3) then begin if (num>=0) and (num<=59) then t:=t+num else ERR:=3;end;
inc(step);
end
else ERR:=2;
end else ERR:=1;
until ((step=4) or (err<>0));
until err=0;
GetTime:=t;
end;
begin
writeln('pervoe vremy:');
t1:=GetTime;
writeln('vtoroe vremy:');
t2:=GetTime;
if t2>=t1 then dt:=t2-t1 else dt:=t2-t1+24*60*60;
writeln('raznica v sekundah: ');
writeln(dt);
end.
CLS
a:
INPUT n
IF n < 1 OR INT(n) <> n OR n > 1000 THEN GOTO a
DIM a(n)
FOR i = 1 TO n
b:
INPUT a(n)
IF a(n) < 1 OR INT(a(n)) <> a(n) OR a(n) > 30000 THEN GOTO b
IF INT ((a(n) - 3) / 10) = ((a(n) - 3) / 10) THEN z = z + 1
NEXT i
PRINT z
END