21-22.12.2012. Информатикадан аудандық олимпиада есептері шығаруларымен. 10-11сынып. І-ІІ тур.

І-тур 10-11.  A есебі Жұптар

N саннан тұратын тізбек беріледі. Осы сандардың ішінен тақ сандардың қосындысын шығарыңыз
Мәліметтерді енгізу форматы
Енгізу файлдың бірінші жолында бүтін сан N (1 <= N <= 1000) беріледі. Келесі жолда әрқайсысы  1000-нан кіші немесе тең, оң бүтін N сандар беріледі.
Мәліметтерді шығару форматы
program esepA;
var i,n,s:integer;
a:array[1..1000] of integer;
f1,f2:text;
begin
assign(f1,’a.in’);
reset(f1);
assign(f2,’a.out’);
rewrite(f2);
readln(f1,n);
for i:=1 to n do read(f1,a[i]);
s:=0;
for i:=1 to n do
if a[i] mod 2 =1 then s:=s+a[i];
writeln(f2,s);
close(f1);
close(f2);
end.

Немесе:
Есептің жауабы осында.


І-тур 10-11. B есебі Көңілді цифрлер
S жолы беріледі. Осы жолда кездесетін барлық цифрларды және олардың санын шығарңыз.
Мәліметтерді енгізу форматы
Енгізу файлдың бірінші жолында тек цифрлардан тұратын S жолы беріледі (1 <= |S| <= 1000).
Мәліметтерді шығару форматы
Жолда кезедесетін әр цифр үшін оны және ол қанша рет кездесетінін бір бос орынмен бөліп өсу ретімен бір бөлек жолда шығарыңыз.
Мысал / Пример

B.in B.out Комментарий
90109914 0 2
1 2
4 1
9 3

Задача В Веселые цифры
Дается строка S. Нужно вывести все цифры, которые встречаются в ней и их количество.
Формат входных данных
Первая строка входного файла содержит состоящую только из цифр строку S, (1 <= |S| <= 1000).
Формат выходных данных
Для каждой цифры, которая встречается в строке, выведите в отдельной строке ее и сколько раз она встречается, разделяя ровно одним пробелом, в возрастающем порядке.
program esepB;
var i,s:integer;
c:char;
a:string[26];
f1,f2:text;
begin
assign(f1,’b.in’);
reset(f1);
assign(f2,’b.out’);
rewrite(f2);
a:=’abcdefghijklmnopqrstuvwxyz’;
for i:=1 to 26 do begin
s:=0;
while not eof(f1) do
begin
read(f1,c);
if a[i]=c then s:=s+1;
end;
if s<>0 then writeln(f2,a[i],’ ‘,s);
reset(f1);
end;
close(f1);
close(f2);
end.


С Жай сандар
Бүтін N саны беріледі. N-ге дейінгі барлық жай сандардың қосындысын табыңыз. Жай сан 1-ге және өзіне ғана бөлінетін сан.
Мәліметтерді енгізу форматы
Енгізу файлдың бірінші жолында бір бүтін сан N (1 <= N <= 1000000) беріледі.
Мәліметтерді шығару форматы
Есептің жауабын шығарыңыз.
Мысал / Пример

C.in C.out Комментарий
5 10 2+3+5=10

Задача C Простые числа
Задано целое число N. Найдите сумму простых чисел до N. Простое число это число, которое делится только на 1 и на самого себя.
Формат входных данных
Первая строка входного файла содержит одно целое число N (1 <= N <= 1000000).
Формат выходных данных
Выведите сумму простых чисел от 1 до N.
program esepC;
var n,s:longint;
i,j,k:integer;
f1,f2:text;
begin
assign(f1,’c.in’);
reset(f1);
assign(f2,’c.out’);
rewrite(f2);
readln(f1,n);
s:=0;
for i:=1 to n do begin
k:=1;
for j:=2 to i do
if i mod j=0 then k:=k+1;
if k=2 then s:=s+i;
end;
writeln(f2,s);
close(f1); close(f2);
end.



II-тур 10-11. D есебі Орындықтар
Қатарда N орындықтар тұр. Анда-санда адам келіп, бос орындықтарының біріне отырады. Адам отырғанда оның барлық көршілес орындықтарда отырған адамдар тұрып кетеді. Ең көп дегенде қанша орындық бос емес болуы мүмкін?
Мәліметтерді енгізу форматы
Енгізу файлдың бірінші жолында бүтін сан N (1 <= N <= 1000) беріледі
Мәліметтерді шығару форматы
Есептің жауабын шығарыңыз.

Мысал / Пример

D.in D.out Комментарий
3 2 101, осында 1 бос емес орындық, 0 бос.
101, где 1 это занятый стул, 0 незанятый.

Задача D Стулья
В ряд стоят N стульев. Время от времени подходит человек и садится на один из свободных стульев. При этом все соседи (если такие есть) встают и уходят. Какое наибольшее число стульев может оказаться занятым, если сначала все они свободны?
Формат входных данных
Первая строка входного файла содержит целое число N (1 <= N <= 1000).
Формат выходных данных
Выведите ответ к задаче.
var
n,s: integer;
begin
Assign(input, ‘D.in’);
Reset(input);
assign(output,’D.out’);
rewrite(output);
readln(n);
s := 0;
if n mod 2 = 0 then s:=n div 2 else
s:=(n div 2) + 1;
WriteLn(s);
end.


E есебі Көп сандар
N саннан тұратын тізбек беріледі. Осы сандарды екіден қос алып көбейткенде ең көп дегенде қанша шығатынын табыңыз.Мәліметтерді енгізу форматы
Енгізу файлдың бірінші жолында бүтін сан N (1 <= N <= 1000000) беріледі. Келесі жолда әрқайсысы модулі бойынша 1000000-нан кіші немесе тең, бүтін N сандар беріледі.
Мәліметтерді шығару форматы
Есептің жауабын шығарыңыз.
Мысал / Пример

E.in E.out Комментарий
3
1 2 3
6 2 * 3=6
4
-10 -5 2 3
50 -10 * -5 = 50

Задача E Много чисел
Дается последовательность из N чисел. Найдите максимальное произведение среди всех пар этих чисел.
Формат входных данных
Первая строка входного файла содержит целое число N (1 <= N <= 1000000). В следующей строке задаются N целых чисел, каждое из которых по модулю меньше или равно 1000000.
Формат выходных данных
Выведите ответ к задаче.
var
i,N,my,j,max: integer;
a: array[1..100] of integer;
begin
Assign(input, ‘E.in’);
Reset(input);
assign(output,’E.out’);
rewrite(output);
Readln(N);
for i:=1 to N do
read(a[i]);
max:=0;
For i:=1 to n do
for j:=i+1 to n do
begin
my:=a[i]*a[j];
if my>max then
max:=my;
end;
write (max);
end.


F есебі Сөздік
Жомартта N сөздер бар.Осыған қосы ода S жолы бар. Ол бұл жолдың кез-келген әріптерің орнын ауыстыра алады. Бұл жолды ауыстырып ол сөздіктен қанша сөзді келтіре немесе ала алады?
Мәліметтерді енгізу форматы
Енгізу файлдың бірінші жолында бір бүтін сан N (1 <= N <= 10) беріледі. Келесі N жолдарда ағылшын әліпбиінің кіші әріптерінен тұратын сөздіктің әр сөзі бөлек жолда беріледі (1 <= сөздіктегі сөздің ұзындығы <= 100).
Мәліметтерді шығару форматы
Есептің жауабын шығарыңыз.
Мысал / Пример

F.in F.out Комментарий
3
aba
baa
aab
aba
3
3
food
game
pie
eagm
1

Задача F Словарь
В словаре Жомарта N слов. У него также есть строка S. Он может переставлять любые буквы в этом слове. Сколько слов из словаря он может получить перестановкой букв своей строки S?
Формат входных данных
Первая строка входного файла содержит одно целое число N (1 <= N <= 10). В следующих N строках задается каждое слово словаря, состоящее из строчных букв английского алфавита (1 <= длина слово из словаря <= 100). В последней строке задается строка S (1 <= S <= 100).
Формат выходных данных
Выведите ответ к задаче.
const b=[‘a’..’z’];
var c:char;
s,s1,s2,s3:string;
n,n1,n2,i,j,k,h:byte;
ss: array[1..100] of string;
f:boolean;
begin
Assign(input, ‘F.in’);
Reset(input);
assign(output,’F.out’);
rewrite(output);
readln(n);
for i:=1 to n do readln(ss[i]);
readln(s3);
n1:=length(s3); h:=0;
for k:=1 to n do
begin
s2:=ss[k];
n2:=length(s2); s1:=s3;
if n1=n2 then
begin
s:=”;
i:=1;
while i begin
j:=1;
f:=false;
while(j if s2[j]=s1[i] then f:=true
else j:=j+1;
if f then
begin
s:=s1[i]+s;
delete(s1, i ,1); delete(s2, j ,1);
end
else i:=i+1;
end;
if s1=” then begin h:=h+1; end
end
end;
if h=0 then writeln (‘No’) else
writeln(h);
end.

Менің вариантым:
program sozder_sany;
var i,j,k,k1,n,y:integer;
s:string; sl:array[1..100] of string;
procedure slova(x:string);
begin
if length(s)<>length(x) then begin writeln(‘NO… ‘);exit; end;
k:=0;
for j:=1 to length(s) do
for y:=1 to length(x) do if s[j]=x[y] then k:=k+1;
if k>=length(s) then k1:=k1+1 else exit;
end;

begin
{write(‘engiziniz N = ‘);
read(n);
for i:=1 to n do read(sl[i]);}
sl[1]:=’food’; sl[2]:=’game’; sl[3]:=’pie’; sl[4]:=’eagm’;
k1:=0;n:=4; s:=sl[n];
for i:=1 to n-1 do
begin
slova(sl[i]);
end;
writeln(‘Sozder sany =…’,k1);
end.

Check Also

Информатитка пәнінен олимпиадаға даярлаудың тиімді жолдары

Жуалы ауданы, №2 Мыңбұлақ орта мектебі информатика пәні мұғалімі Сабиев Бахытжан Төребайұлы.  Олимпиада – бұл …

4 комментария

  1. Көп сандар (E есебі) есебінде сандарды қос-қостан алып, көбейтіп салыстырған тиімсіз. Себебі 1 <= N max then begin max:=a[i]; p:=i; end;
    if a[i]max then max:=a[i];
    a[1]:=a[p]; a[p]:=t1;
    t1:=t1*max;
    a[q]:=a[1]; a[1]:=min;
    min:=a[2];
    for i:=3 to n do
    if a[i]t2 then write(t1) else write(t2);
    close(input);
    close(output);
    end.

    Төмендегідей кодпен үлкен көлемді тест жасап тексерілген:
    var i:longint;
    begin
    randomize;
    assign(output,’e.in’);rewrite(output);
    writeln(1000000);
    for i:=1 to 1000000 do write(round(2000000*random-1000000),’ ‘);
    close(output);
    end.

  2. Көп сандар (E есебі) есебінде сандарды қос-қостан алып, көбейтіп салыстырған тиімсіз. Себебі 1 <= N max then begin max:=a[i]; p:=i; end;
    if a[i]max then max:=a[i];
    a[1]:=a[p]; a[p]:=t1;
    t1:=t1*max;
    a[q]:=a[1]; a[1]:=min;
    min:=a[2];
    for i:=3 to n do
    if a[i]t2 then write(t1) else write(t2);
    close(input);
    close(output);
    end.

    Төмендегідей кодпен үлкен көлемді тест жасап тексерілген:
    var i:longint;
    begin
    randomize;
    assign(output,’e.in’);rewrite(output);
    writeln(1000000);
    for i:=1 to 1000000 do write(round(2000000*random-1000000),’ ‘);
    close(output);
    end.

  3. 08.01.13 облыстыкта келген есетер: 1 тур: 1.Кассадагы кезек
    2.Жолды бояу 3.Номера перестановка

  4. 08.01.13 облыстыкта келген есетер: 1 тур: 1.Кассадагы кезек
    2.Жолды бояу 3.Номера перестановка

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

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

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