Аудандық олимпиада. ІІ-тур. 2016-2017 оқу жылы.

D есебі
5 бүтін сандар берілген. Осы сандардың арасынан төртеуін таңдағандағы қосындының ең
үлкен жəне ең кіші мəндерін табыңыз.
Мəліметтерді енгізу форматы
Бірінші жолда 5 бүтін сан берілген. Əр санның абсолют мəні 100-ден аспайды.
Мəліметтерді шығару форматы
Ең кіші жəне ең үлкен қосындының мəнін кемістік (пробел) арқылы бөліп шығарыңыз.
Мысал / Пример
D.in D.out Комментарий
1 2 3 4 5 10 14
1 1 1 1 2 4 5

Задача D
Даны 5 целых чисел. Посчитайте минимально возможную и максимально возможные
суммы выбрав ровно 4 числа из заданных изначально.
Формат входных данных
Единственная строка входного файла содержит 5 целых чисел. Все числа не превосходят
100 по абсолютному значению.
Формат выходных данных
Выведите минимально возможную и максимально возможную суммы, разделенные
пробелом.

Алгоритм. Алдымен сандарды өсу ретімен реттеп аламыз. Ең үлкен соңғы санды қалдырып,  қосындысын табамыз – бұл Мин қосынды болады. Осыдан соң, ең іші бінрінші санды қалдырып қосындылаймыз – бұл Мах қосынды болады.

program D_zadasha_MinMax;
var i,j,r,s1,s2:integer;
a:array[1..5] of integer;
begin
write(‘ 5 san engiz ‘);
for i:=1 to 5 do read(a[i]);
writeln;
for i:=1 to 4 do                {retteu}
for j:=i+1 to 5 do
if a[j]<a[i] then begin
r:=a[i]; a[i]:=a[j]; a[j]:=r;
end;
for i:=1 to 4 do s1:=s1+a[i];    {min tabu}
for i:=2 to 5 do s2:=s2+a[i]; {max tabu}
writeln(‘summs MIN = ‘,s1);
writeln(‘summs MAX = ‘,s2);
end.

E есебі
Батырхан 3-ке қалдықсыз бөлінетін сандарды жақсы көреді. Өкінішке орай, өте үлкен
сандар үшін жақсы көру керек пе, əлде жоқ па тексере алмайды. Батырхан сіздің
көмегіңізді сұрап жатыр, жақсы көру керектігін анықтайтын программа жазып беріңіз!
Мəліметтерді енгізу форматы
Бір ғана сан X – тексеру керек сан (0 <= X <= 101000 ).
Мəліметтерді шығару форматы
Егер X саны 3-ке қалдықсыз бөлінсе “YES”, егер бөлінбесе “NO” сөзін шығарыңыз
(тырнақшасыз).
Мысал / Пример
E.in E.out Комментарий
111 YES
5 NO
Задача E
Батырхан любит числа, которые без остатка делятся на число 3. К сожалению, для очень
больших чисел он не может проверить должен ли он любить его или нет. Помогите ему
написав программу, которая поможет ему!
Формат входных данных
Единственная строка входного файла содержит X – число которое необходимо проверить
(0 <= X <=101000 ).
Формат выходных данных
Выведите “YES” (без кавычек), если X без остатка делится на 3, иначе выведите “NO” (без
кавычек).

program E_zadasha ;
var x,n:longint;
i:integer;
begin
write(‘ x<=10nnyn 1000darejesi ‘); read(x);
writeln;
if x mod 3=0 then writeln(‘ YES ‘)
else writeln(‘ NO ‘);
end.

F есебі
Сізге ұзындығы n болатын A массиві берілген. Сіз осы массивтің элементтерін алып
тастай аласыз. Сізге элементтерді алып тастау арқылы массивті оспелі ету қажет. Соңында
пайда болған өспелі массивтің ең үлкен бола алатын ұзындығын табу керек.
Мəліметтерді енгізу форматы
Енгізу файлының бірінші жолында N (1 <= N <= 100000) саны берілген – тізбектегі
сандардың саны. Екінші жолда кемістікпен (пробел) бөлінген N сан берілген – A тізбегінің
сандары. Əрбір санның абсолют мəні 1000000000-нан аспайды.
Мəліметтерді шығару форматы
Бір ғана сан – есептің жауабын шығару керек.
Мысал / Пример
F.in            F.out       Комментарий
4                   3               Необходимо удалить 4, тогда результирующий массив будет 1 2 3
4  1  2  3

Задача F
Вам дан массив A длины n. Вы можете удалить некоторые элементы из него, при этом
после всех удалений элементы должны стоять в строго возрастающем порядке. Выведите
максимальную возможную длину массива после всех удалений.
Формат входных данных
Первая строка входного файла содержит целое число N (1 <= N <= 1000000) – длину
последовательности. Вторая строка входного файла содержит N целых чисел – элементы
последовательности A. Все элементы последовательности не превосходят 1000000000 по
абсолютному значению.
Формат выходных данных
Выведите ответ к задаче.

Алгоритм. Массивтегі кезекті сан алдынғысынан үлкен болса, (if f[j]<f[i] then f[i]:=0;) оны өшіреміз. Осыдан соң, массивтегі барлық элементтерді тексеріп, 0-ге тең (if f[i]<>0) еместерін есепке алып (k:=k+1) және элементің өзін басып шығарамыз. Ақырында к-ны басып шығарамыз.

program F_zadasha_Retteu_sany;
var i,j,k,n:integer;
f:array[1..100000] of integer;
begin
write(‘kansha san ‘); read(n);
writeln(n,’ san engiziniz ‘);
writeln; k:=0;
for i:=1 to n do read(f[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if f[j]<f[i] then f[i]:=0;
for i:=1 to n do
if f[i]<>0 then begin k:=k+1;write(f[i],’ ‘);end;
writeln(‘k= ‘,k);
end.

Сізде басқа нұсқасы болса осы мақаланың астына жазуыңзды өтінем.

Check Also

DNS жүйесін қолдана отырып арзан әрі мыңдаған компьютерлерге интернет сүзбесін орнатуға болатын жүйені іске асыру

 

6 комментариев

  1. “Е” есебінің толық нұсқасы
    var b : integer;
    n : longint;
    f1,g:text;
    Begin
    assign(f1,’c:\1\e.in’);
    reset(f1);
    Read(f1,n);
    Close(f1);
    b :=n mod 3;
    assign(g,’c:\1\e.out’);
    Rewrite(g);
    if b= 0 then Writeln (g,’yes’)else
    Writeln (g,’no’);
    close(g);
    end.

  2. Информатик

    Е жане F есептери кате. Е есебинде берилген сан мын танбалы. Ол лонгинт типине сыймайды. Ол ешкандай типке сыймайды. Сондыктан оны бир сан ретинде оки алмаймыз.
    F есебинде массивтин элементтери он жане терис сандар жане 0 болуы да мумкин. Сондыктан берилген алгоритм бул жерде дурыс шешим бермейди.

    • Сіздің нұсқаңыз қандай сонда?

      • Информатик

        var s,k,code:integer;
        f:string[1];
        begin
        assign(input,’e.in’); reset(input);
        assign(output,’e.out’); rewrite(output);

        while not eoln do
        begin
        read(f);
        val(f,k,code);
        s:=s+k;
        end;
        if s mod 3 =0 then write (‘YES’) else write(‘NO’);

        end.

      • Информатик

        var n,k,max,i:longint;
        a:array[1..100000] of longint;
        begin
        assign(input,’f.in’); reset(input);
        assign(output,’f.out’); rewrite(output);
        readln(n);
        for i:=1 to n do read(a[i]);
        k:=1; max:=1;
        for i:=1 to n-1 do
        if a[i]<a[i+1] then inc(k)
        else begin
        if max<k then max:=k;
        k:=1;end;
        if max<k then max:=k;
        write(max);
        end.

  3. Екінші программаның есептеу идеясы туралы бір-екі ауыз айтсаңыз нұр үстіне нұр болар еді.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.