===== PascalABC.NET =====
begin
// 1
var s := 1;
var i := 1;
repeat
s += i * i * i;
i += 2
until i > 13;
Println('Сумма кубов нечетных чисел от 1 до 13 равна', s);
// 2
var (sum, pr) := (0, 1);
for var j := -50 to 50 do
// если условие предполагает, что "кратны 5 и 8"
// на самом деле означает "кратны 5 ИЛИ 8", заменить
// в следующей строке and на or
if (j mod 5 = 0) and (j mod 8 = 0) then
begin
Print(j);
sum += j;
pr *= j
end;
Writeln;
Write('Сумма: ', sum, ', произведение: ', pr)
end.
Задача2 - пример явной глупости того, кто ее придумал. При симметрии интервала с положительными и отрицательными числами, отбираемыми по кратности, каждому отобранному положительному числу будет соответствовать такое же отрицательное, поэтому сумма всегда будет нулевой. Вычислять произведение также нет смысла, поскольку ноль кратен любому числу и он всегда будет одним из сомножителей, обнуляя результат.
Если будете сдавать в тестирующей системе, то вместо string, лучше использовать массив char - работает быстрее.
var n,i,k,p,mx,mxj: integer;
s: array[1..100000] of char;
begin
readln(n);
for i:=1 to n do read(s[i]);
k:=0; p:=0;
mx:=0; mxj:=0;
for i:=1 to n do
begin
if s[i]='G' then k:=k+1
else
begin
if p=1 then
begin
p:=0;
if s[i-1]='G' then
if (k>mxj) then mxj:=k;
k:=0;
end
else
begin
if k>0 then p:=1;
if k>mx then mx:=k;
end;
end;
end;
if mx>mxj then k:=mx+1
else k:=mxj+1;
if k=1 then k:=0;
writeln(k);
end.
Объяснение:
повне розгалуження