Информатикадан аудандық олимпиада есептерінің шығарылуы 18-19 желтоқсан 2013ж)

Махсет Ауданов. Маңғыстау облысы, Бейнеу ауданы, Бейнеу гимназиясының информатика пәні мұғалімі.

І тур (А, В, С есептері)
A есебі Факториал
N - Factorial — 1-ден N-ге дейінгі сандардың кобейтіндісі. Берілген N саны үшін, N - Factorialсанының соңында қанша нөл бар екенін анықтаныз.
Мәліметтерді енгізу форматы
Енгізу файлында бір бүтін сан — N (1 ≤ N ≤ 106) берілген.
Мәліметтерді шығару форматы
N - Factorial санының соңындағы нөлдер санын шығарыңыз.
Мысал / Пример
A.in A.out Комментарий
4610 012 1*2*3*4=241*2*3*4*5*6=7201*2*3*4*5*6*7*8*9*10=3628800

Program esepA;
label 1;
var n,i,s:integer;
f:longint;
f1,f2:text;
begin
assign(f1,’a.in’); reset(f1);
assign(f2,’a.out’); rewrite(f2);
readln(f1,n);
f:=1;
for i:=1 to n do f:=f*i;
s:=0;
for i:=1 to n do if f mod 10=0 then
begin
s:=s+1;
f:=f div 10;
end
else goto 1;
1:writeln(f2,s);
close(f2); close(f1);
end.

**************************************
Енгізу файлының аты / Имя входного файла: B.in
Шығару файлының аты / Имя выходного файла: B.out
Есептің жауабы файлының аты / Имя файла решения задачи: B.{c,cpp,pas}
Уақыт шектеу / Ограничение по времени: 2 секунд
Жадыға шектеу / Ограничение по памяти: 64 мегабайт
Б есебі Цифрлар
Біз бір-бірімізге хат жазған кезде сандарды жиі қолданамыз. Сізге ағылшын тілінде жазылған сөйлем берілген. Сол сөйлемде кездесетін бүкіл цифрларды табу керек.
Мәліметтерді енгізу форматы
Енгізу файлында ағылшын тілінде жазылған бір сөйлем берілген. Сөйлемнің ұзындығы 100 символдан аспайды.
Мәліметтерді шығару форматы
Берілген сөйлемде кездесетін бүкіл цифрларды өсу ретімен жазыңыз.
Мысал / Пример
B.in
I owe you 491 tenge and I will return it when I will be in university at 15:22
B.out
12459

Program esepB;
label 1;
var s,z:string;
n,i,j:integer;
f1,f2:text;
begin
assign(f1,’b.in’); reset(f1);
assign(f2,’b.out’); rewrite(f2);
readln(f1,s);
n:=length(s);
z:=’0123456789′;
for i:=1 to 10 do
begin
for j:=1 to n do if s[j]=z[i] then
begin
writeln(f2,z[i]);
goto 1;
end;
1:end;
close(f2); close(f1);
end.

**************************************

Енгізу файлының аты / Имя входного файла: C.in
Шығару файлының аты / Имя выходного файла: C.out
Есептің жауабы файлының аты / Имя файла решения задачи: C.{c,cpp,pas}
Уақыт шектеу / Ограничение по времени: 2 секунд
Жадыға шектеу / Ограничение по памяти: 64 мегабайт
C есебі Сандар
Сізге N саны және D цифры берілген. Кұрамында D цифры жоқ бүкіл N-таңбалы сандарды шығарыңыз.
Мәліметтерді енгізу форматы
Енгізу файлында N (1 ≤ N ≤ 7) саны және D (0 ≤ D ≤ 9) цифры берілген.
Мәліметтерді шығару форматы
Кұрамында D цифры жоқ бүкіл N-таңбалы сандарды өсу ретімен шығарыңыз.
Мысал / Пример
C.in C.out
1 3 0 1 2 4 5 6 7 8 9

Program esepC;
var n,d,a,b,n1,i,j:longint;
s1,d1:string;
t:boolean;
f1,f2:text;
begin
assign(f1,’c.in’); reset(f1);
assign(f2,’c.out’); rewrite(f2);
readln(f1,n,d);
case n of
1:begin a:=0; b:=9; end;
2:begin a:=10; b:=99; end;
3:begin a:=100; b:=999; end;
4:begin a:=1000; b:=9999; end;
5:begin a:=10000; b:=99999; end;
6:begin a:=100000; b:=999999; end;
end;
for i:=a to b do
begin
t:=false;
str(i,s1); n1:=length(s1);
str(d,d1);
for j:=1 to n1 do if s1[j]=d1 then t:=true;
if not t then writeln(f2, i);
end;
close(f2); close(f1);
end.

ІІ тур (D, E, F есептері)
D есебі Үш сан
N бүтін саннан тұратын а1, а2, …, an тізбегі берілген. Сізге осы тізбекте қосындысы нөлге тең болатын үш санның бар немесе жоқ екендігін тексеру керек.
Мәліметтерді енгізу форматы
Енгізу файлының бірінші жолында бір бүтін сан N (1 ≤ N ≤ 200) берілген. Келесі жолда
N бүтін сан a1, a2, …, aN ( - 1000 ≤ ai ≤ 1000) — тізбек элементтері берілген.
Мәліметтерді шығару форматы
Егер тізбекте қосындысы нөлге тең үш сан болса «YES» деп шығарыңыз. Егер болмаса «NO» деп шығарыңыз.
Мысал / Пример
D.in D.out Комментарий
64 14 -6 2 1 22
4
4 -9 2 -1 YES
NO (4) + (-6) + (2) = 0

Program esepD;
label 1;
var i,j,k,n:integer;
a:array[1..1000] of integer;
t:boolean;
f1,f2:text;
begin
assign(f1,’d.in’); reset(f1);
assign(f2,’d.out’); rewrite(f2);
readln(f1,n);
for i:=1 to n do read(f1,a[i]);
t:=false;
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for k:=j+1 to n do
if (a[i]+a[j]+a[k])=0 then
begin t:=true; writeln(f2,’YES’); goto 1 end;
if not t then writeln(f2,’NO’);
1:end.

*************************************
E есебі Кері алмастыру
N саннан тұратын алмастыру дегеніміз 1-ден N-ге дейінгі әр сан бір рет кездесетін тізбек. b1, b2, …, bN алмастыруы a1, a2, …, aN алмастыруына кері алмастыру болу үшін 1-ден N-ге дейінгі барлықi үшін b[ai] = i болу керек. Берілген екі алмастыру үшін екіншісінін біріншісіне кері алмастыру болатынын немесе болмайтынин анықтаңыз.
Мәліметтерді енгізу форматы
Енгізу файлының бірінші жолында бір бүтін сан N (1 ≤ N ≤ 1000) берілген. Екінші жолда
N бүтін сан a1, a2, …, aN (1 ≤ ai ≤ N)— бірінші алмастыру элементтері берілген. Үшінші жолда
N бүтін сан b1, b2, …, bN (1 ≤ bi ≤ N)— екінші алмастыру элементтері берілген.
Мәліметтерді шығару форматы
Егер екінші алмастыру бірінші алмастыруға кері алмастыру болса «YES» деп шығарыңыз. Егер болмаса «NO» деп шығарыңыз.
Мысал / Пример
E.in E.out Комментарий
5
4 3 1 5 2
3 5 2 1 4
4
1 4 3 2
2 1 4 3 YES

NO b[a1] = b[4] = 1, b[a2] = b[3] = 2, b[a3] = b[1] = 3, b[a4] = b[5] = 4, b[a5] = b[2] =5

Program esepE;
var i,n:integer;
a,b:array[1..1000] of integer;
t:boolean;
f1,f2:text;
begin
assign(f1,’e.in’); reset(f1);
assign(f2,’e.out’); rewrite(f2);
readln(f1,n);
for i:=1 to n do read(f1,a[i]);
for i:=1 to n do read(f1,b[i]);
t:=false;
for i:=1 to n do if b[a[i]]i then t:=true;
if not t then writeln(f2,’YES’) else writeln(f2,’NO’);
end.

*************************************

F есебі Төлем
Бүгін Али жергілікті дүкенде C теңгеге сауда жасады. Али ақшаны төлейін деп жатқан кезде сатушы оған “Өтінемін, қайтарымсыз төлеңізші” деді. Алиде құны a1, a2, …, aN теңге болатын N тиын бар. Сіздің тапсырмаңыз Алидің берілген соманы кайтарымсыз төлей алатын немесе алмайтындығын анықтау.
Мәліметтерді енгізу форматы
Енгізу файлының бірінші жолында екі бүтін сан C (1 ≤ C ≤ 1000) және N (1 ≤ N ≤ 15) берілген. Келесі жолда N бүтін сан a1, a2, …, aN (1 ≤ ai ≤ 1000) — Алидің тиындарының құндары берілген.
Мәліметтерді шығару форматы
Егер Али қайтарымсыз төлей алатын болса «YES» деп шығарыңыз. Төлей алмаса «NO» деп шығарыңыз.
Мысал / Пример
F.in F.out Комментарий
10 6
1 20 4 3 11 59 3
8 2 6 YES
NO 1+4+5=10

Program esepF;
label 1;
var a,b:array[1..1000] of integer;
s:array[0..1000] of integer;
k,t,i,z,n:integer;
tr:boolean;
f1,f2:text;
procedure B1;
label 0;
begin
while b[k]=1 do
begin
k:=k-1;
if k=0 then goto 0;
end;
b[k]:=1;
0:end;
procedure T1;
begin
if (s[k]>z) or ((k=n) and (s[k]z)) then t:=1
else t:=0;
end;

BEGIN
assign(f1,’f.in’); reset(f1);
assign(f2,’f.out’); rewrite(f2);
readln(f1,z,n);
for i:=1 to n do read(f1,a[i]);
k:=1; b[1]:=0; s[0]:=0; T1; tr:=false;
while k>0 do
begin
if b[k]=1 then s[k]:=s[k-1]+a[k] else s[k]:=s[k-1];
if t=1 then begin B1; T1; end
else if k=n then begin tr:=true; goto 1; end
else
begin
k:=k+1;
b[k]:=0;
T1;
end;
end;
1:if not tr then writeln(f2,’YES’) else writeln(f2,’NO’)
END.

Check Also

Электрондық күнделікті пайдалану туралы

Электрондық күнделікті пайдалану туралы тамаша бейнесабақ.  Өскембаева Кенже ханымның тамаша бейнесабақтары.

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

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

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