2008-2009 Олимпиада есептері шешулерімен.


Қыдырбек Өмірбек
Кошевой атындағы негізгі мектеп информатика пәні мұғалімі
Алматы облысы, Ескелді ауданы.

А есебі. Шеңбер

Енгізу файлының аты:      A.in
Шығару файлының аты:                A.out
Есептін жауабы файлының аты:     A.{c,cpp,pas}
Уақыт шектеу:                            2 секунд
Жадыға шектеу:                          64  мегабайт

Шеңберде бірдей қашықтықта N нүктелер белгіленген, олар қарсы сағаттык тілдің бүтін сандармен 1-ден N-ға нөмірленген. Сіздерге осы шеңбердің бірнеше кос хордалар берілген, хорданың ұштары сол нүктелер болады. Әрбір қос хордалар үшін анықтаңыздар, олар қиылып кетеді ме, немесе киылымайды (сүйкелмейген хордалар киылмаған деп саналады).

Мәліметтерді енгізу форматы

Кіріс файлдың бірінші жолында екі бүтін сан тұрады: N және К (1 <= N <= 109, 1 <= К <= 100). Келесі К жолда 4 бүтін сан тұрады: A1, В1, А2, В2 – бірінші хорданын (А1, В1) жэне екінші хорданың (А2, В2) нүктелерінің нөмірлері. Жолдағы сандар пробелмен арқылы бөлінген.

Мәліметтерді шығару форматы

Шығыс файлға әрбір қос хордалардың үшін бір жол жазылу керек – YES, егер хордалар киылып кетеді, немесе NO, егер хордалар киылыспайды (сүйкелмейді).
Мысал

A.in A.out
4 3
1 3 2 4
1 2 3 4
1 2 3 2
YES
NO
YES

Есептің шешімі:

Program A_ecep;
label 1;
Var  A,B:array[1..4,1..4] of word;
n:1..1000000000;
k:1..100;
i,j,max,min,max1,min1:integer;
Begin
assign(input,’A.in’);reset(input);
assign(output,’A.out’);rewrite(output);
Readln(n,k);
for i:=1 to k do
for j:=1 to 2 do
read(a[i,j],b[i,j]);
for i:=1 to k do
for j:=1 to 2 do
if ((a[i,j]>n) or (b[i,j]>n)) or ((a[i,j]=0) or (b[i,j]=0)) then goto 1;
for i:=1 to k do
begin  begin
begin if a[i,1]>b[i,1]   then begin max:=a[i,1];min:=b[i,1];end
else begin max:=b[i,1];min:=a[i,1];end;end;
begin if a[i,2]>b[i,2] then begin max1:=a[i,2];min1:=b[i,2];end
else begin max1:=b[i,2];min1:=a[i,2];end;end;
end;
if max>max1 then begin
if (min>=min1) and (min<=max1) then write(‘YES’) else write(‘NO’); end;
if max<max1 then begin
if (min1>=min) and (min1<=max) then write(‘YES’) else write(‘NO’); end;
writeln;end;1:
end.

В есебі. Бөлгіштер

Енгізу файлының аты:          B.in
Шығару файлының аты:        B.out

Есептін жауабы файлының аты: B.{c,cpp,pas}
Уақыт шектеу:                     2 секунд
Жадыға шектеу:            64  мегабайт

А оң саны В саныньщ бөлгіші аталып жатыр, егер В  А санға қалдықсыз бөлінсе. Мысалы, 15 санында 4 бөлгіш бар: 1, 3, 5, 15. Әрбір берілген сандардың үшін, оның бөлгіштердің саны жұп сан немесе тақ сан болады ма сіздерге анықтау кажетті.

Мәліметтерді енгізу форматы

Кіріс файлдың бірінші жолында бір бүтін сан N (1 < N <= 10s) жазылған. Келесі жолда N бүтін сан Xi (1 <= Xi <= 10 8) жазылған. Бір жолдағы сандар аралары пробелмен бөлінген.

Мәліметтерді шығару форматы

Шығыс файлда аралары пробелмен бөлінген N сан жазылу керек: і-ші сан 0 деп жазылады, егер Xi бөлгіші саны жұп сан болады, немесе 1, егер Xi бөлгіші саны тақ сан болады.
Мысал:

B.in B.out
2
4 5
1  0

Есептің шешімі:

program B;
Var x:array[1..10000] of longint;
a:array[1..10000] of word;
n:1..100000;
m,i,j,r,k:integer;
Begin
assign(input,’B.in’);reset(input);
assign(output,’B.out’);rewrite(output);
Readln(n);
for i:=1 to n do
read(x[i]);
for i:=1 to n do
begin
begin for m:=1 to x[i] do
if x[i] mod m=0 then inc(k);end;
inc(r);a[r]:=k;k:=0;
end;
for r:=1 to n do
if a[r] mod 2=0 then write(‘0′,’ ‘) else write(‘1′,’ ‘);
end.

С есебі. Пайда

Енгізу файлының аты:               C.in
Шығару файлының аты:            C.out
Есептін жауабы файлының аты: C.{c,cpp,pas}
Уақыт шектеу:                     2 секунд
Жадыға шектеу:            64  мегабайт

Компьютер процессор бөлігінен және монитордан құралады. Қоймада N процессор бөлігі және  M  монитор болып жатыр. i- ші процессор бөлігінің бағасы – Ai тугрик,  j – ші монитордың бағасы – Bj тугрик . Дүниежүзілік қаражаттық дағдарыс артынын, i- ші процессор бөлігінен және j- ші монитордан құралған компьютердің бағасы Ai . Bj (көбейту) тугрик болады.Сіздерге дәл осылай компьютердің ең үлкен мүмкін саны жинау керек, олардың барынша ең көп мүмкін болған жиынтық бағасы болу үшін.

Мәліметтерді енгізу форматы

Кіріс файлдың бірінші жолында екі бүтін сан N және M (1 <= N,M <= 1000) . Екінші жолда N бүтін сан тұрады.і- жолдағы сан Ai . Үшінші жолда M бүтін сан тұрады: j- ші жолдағы сан Bj .(1 <= Ai ,Bj <= 1000) . Жолдағы сандар аралары пробелмен бөлінген.

Мәліметтерді шығару форматы

Шығыс файлға пробелмен бөлінген екі бүтін сан жазылу керек – ең үлкен мүмкін болған компьютердің саны және олрдың барынша ең көп мүмкін болған жиынтық бағасы.
Мысал

C.in C.out
3  2
1  2 3
4  5
2  23

Есептің шешімі:

Program C;
Var a:array[1..1000] of integer;
b:array[1..1000] of integer;
n,m:1..1000;
s:Longint;
i,j,r:integer;
Begin
assign(input,’C.in’);reset(input);

assign(output,’C.out’);rewrite(output);
Readln(n,m);
For i:=1 to n do
read(a[i]);
for j:=1 to m do
read(b[j]);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[j]>a[i] then
begin r:=a[i]; a[i]:=a[j]; a[j]:=r;end;
for i:=1 to m-1 do
for j:=i+1 to m do
if b[j]>b[i] then
begin r:=b[i]; b[i]:=b[j]; b[j]:=r;end;
s:=0;
if n>m then begin
for i:=1 to m do  s:=s+(a[i]*b[i]);end
else begin for i:=1 to n do  s:=s+(a[i]*b[i]);end;
if m>n then write(n,’ ‘,s) else write(m,’ ‘,s);
end.

D есебі . Жалқаулық
Енгізу файлының аты:              D.in
Шығару файлының аты:           D.out
Есептін жауабы файлының аты: D.{c,cpp,pas}
Уақыт шектеу:                     2 секунд
Жадыға шектеу:            64  мегабайт

Оқытушы емтиханға дайындалуға үшін оқушыларына N сұрақтарды берді.Осы сұрақтардан ол емтиханға үшін А сұрақты таңдайды,ал оқушы, бесті алу үшін В сұрақты (бұларды А сұрақтан)жауап беру тиісті. Қу оқушы барлық сұрақтарды оқыуды қаламайды.Бесті алу үшін, сұрақтардың қандай ең аз саны оған жаттап алу  керек ?

Мәліметтерді енгізу форматы

Кіріс файлдың жекеше жолында үш бүтін сан жазылған: N,A және В(1<=N<=100000, 1<=B<=A<=N).Сандар аралары пробел арқылы бөлінген.

Мәліметтерді шығару форматы

Шығыс файлда бір бүтін сан жазылу керек – есептің жауабы.

Мысыл

D.in D.out
10  7  3 6

Есептің шешімі:

Program D;
Var N:1..100000;
A,B,M:integer;
F,F2: text;
Begin
Assign(f,’d.in’); reset(f);
Assign(f2,’d.out’); rewrite(f2);
Readln(f,n,a,b);
if (n>a) and (a>b) then  M:=n-a+b;
writeln(f2,m);
close(f);
Close(f2);
end.

Е есебі.Серіппе

Енгізу файлының аты:              E.in
Шығару файлының аты:           E.out
Есептін жауабы файлының аты: E.{c,cpp,pas}
Уақыт шектеу:                     2 секунд
Жадыға шектеу:            64  мегабайт

N мөлшерілі серіппе – натуральды сандардылардың NхN мөлшерімен кестесі, кесте орталығында әрқашан 1 тұрады,одан оң жақтан 2, серіппе қпрсы сағаттық тілдің бұралып қалып жатыр. N мөлшерлі серіппесін шығарыңыздар.

Мәліметтерді енгізу форматы

Кіріс файлдың жекеше жолында бір бүтін сан жазылған – N (1<=N<100,N-тақ сан).

Мәліметтерді шығару форматы

Шығыс файлдың N жолда N бүтін саны жазу керек – N мөлшері спираль.Сандар аралары пробелмен бөлінген болу керек.
Мысал

E.in E.out
1 1
3 5   4   3 

6   1   2

7   8   9

5 17   16   15   14   13 

18     5     4     3   12

19     6     1     2   11

20     7     8     9   10

21    22    23   24  25

Есептің шешімі:

Program E;
Uses crt;
label 1;
var i,j,m,n,l,r : integer;
tab         : array [1..100,1..100] of word;
begin
assign(input,’E.in’);reset(input);
assign(output,’E.out’);rewrite(output);
readln(m);
N:=m; l:=n*m+1;
while l<>1 do begin inc(r);
for i:=n-r+1 downto r do begin dec(l);tab[i,n-r+1]:=l end;
if l=1 then goto 1;
for i:=m-r   downto r+1 do begin dec(l);tab[r,i]:=l end;
for i:=r   to n-r+1   do begin dec(l);tab[i,r]:=l  end;
for i:=r+1 to m-r   do begin dec(l);tab[n-r+1,i]:=l end; end;
1:
for j:=1 to m do
for i:=1 to n do
begin
write(tab[i,j]:4);
if i=n then writeln;
end;
end.

F есебі. Дәрежесі

Енгізу файлының аты:               F.in
Шығару файлының аты:            F.out
Есептін жауабы файлының аты: F.{c,cpp,pas}
Уақыт шектеу:                     2 секунд
Жадыға шектеу:            64  мегабайт

Сіздерге А, В және С бүтін сандары берілген.АB (А-ның В дәрежесі ) С-ға бөлуінің қалдығы шығарыңыздар.

Мәліметтерді енгізу форматы

Кіріс файлдың жекеше жолында үш бүтін сан жазылған А ,В ,С (0<=A,B<=1018,1 <= C<= 1018). Санар аралары пробел арқылы бөлінген.

Есептің шешімі:

Program f;
Var a,b,c,e,d,i:Longint;
F1,F2: text;
Begin
Assign(f1,’f.in’); reset(f1);
Assign(f2,’f.out’); rewrite(f2);
Readln(f1,a,b,c); d:=1;
For i:=1 to b do
If i>0 then  d:=d*a;
E:=d mod c;
writeln(f2,E);
close(f1);
Close(f2);
end.

Check Also

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

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

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

  1. Абсемет Ербол

    Салеметсізбе?Мен ербол мына нөмірге хабарласыңыз. 87012588187

  2. Абсемет Ербол

    Салеметсізбе?Мен ербол мына нөмірге хабарласыңыз. 87012588187

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

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

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