C++
незнайка ищет наибольшую подпоследовательность данной последовательности целых чисел, сумма элементов которой делится на 3.
он попросил вас написать программу, которая:
• читает с клавиатуры последовательность целых чисел;
• вычисляет длину самой длинной подпоследовательности, сумма элементов которой делится на 3;
• выводит результат на экран;
ввод
первая строка ввода состоит из одного целого числа n (1 n 1). в каждой из следующих n строк находится один элемент последовательности 0 ai 2 (i = 1..n).
вывод
выведите на экран длину наибольшей найденной подпоследовательности.
пример
вход выход
7
10
6
7
12
4
7
22 5
begin
var N, A, B, C, D: integer;
Readln(N, A, B, C, D);
if A > C then (A, B, C, D) := (C, D, B, A);
var s := 1.To(A - 1);
if B < C then // ( ) [ ]
s := s + B.Downto(A) + (B + 1).To(C - 1) +
D.Downto(C) + (D + 1).To(N)
else
if D < B then // ( [ ] )
begin
s := s + SeqGen(C - A, t -> B - t) +
SeqGen(D - C + 1, t -> t + A + B - D) +
SeqGen(B - D, t -> A - t + B - D - 1) + (B + 1).To(N)
end
else // ( [ ) ]
begin
s := s + SeqGen(C - A, t -> B - t) +
SeqGen(D - B, t -> D - t) + SeqGen(B - C + 1, t -> A + t) +
(D + 1).To(N);
end;
s.Println;
end.
Вот пример программы на паскале ABC:
var a:array [1..1000000] of integer;
b:array [1..10] of longint;
c:integer;
i,max,n:longint;
begin
write('Введите число элементов массива: ');
readln(n);
max:=0;
for i:=1 to 10 do
b[i]:=0;
for i:=1 to n do begin
a[i]:=random(10)+1;
write(a[i],' ');
b[a[i]]:=b[a[i]]+1
end;
for i:=1 to 10 do if b[i]>max then
begin
c:=i;
max:=b[i]
end;
writeln;
writeln('Чаще всего в массиве встречается число ',c)
end.