ІІ-тур. Информатикадан 2011-2012 жылғы аудандық олимпиадасы, 2-этап.

Есептерді шығарғандар: Шоңбаев Жеңіс Павлодар, Жақаев М Жамбыл обл., Миржан Темирбеков, ШҚО Тарбағатай ауданы Ақмектеп ауылы

Информатикадан 2011-2012 жылғы аудандық олимпиадасы, 2-этап, ІІ-тур, 5 сағат.

D есебі. Оқу.

Енгізу файлының аты / имя входного файла: D.in
Шығару файлының аты / имя выходного файла: D.out

Жомар жолдағы әр екінші символды өткізіп (яғни, оқымайды) оқуды ұнатады. Еегер “abсdе” жолын оқыса, онда ол а-ны оқып,  b-ны өткізеді, содан кейін d-ны оқып e-ні өткізеді. Жомарт қанща рет “ab” жолын оқығанын білгісі келеді.

Мәліметтерді енгізу форматы: Енгізу файлының бірінші жолында Жомарт оқыған жол S беріледі. Оның бос орны жоқ және ұзындыңы 100 аз екеніне кепілдік беріледі.
Мәліметтерді шығару форматы: Жомарт қанща рет “ab” жолын оқығанын шығарады.

Мысалы / пример:

А.in А.out Комментарий
“aсbеd” 1 Жомарт “abd” жолын оқыған. Бұл жолда “ab” бір рет кездеседі.

Есептің программасы:

D есебі Оқу 

program zadD_Oku;
var
s:string;
f,g:text;
i,k:integer;
begin
assign(f,’D.in’);
assign(g,’D.out’);
reset(f);
rewrite(g);
readln(f,s);
for i:=1 to length(s)-2 do

if (s[i]=’a’) and (s[i+2]=’b’) then inc(k);
writeln(g,k);
close(f);
close(g);
end.

Прогамма аты
Деректер типін анықтау
S – бүтін тип, жолдағы әріптер саны
f,g – кіріс/шығыс файл аттарының типі
i – қайт. параметрі, k – “ab” жолын санау
прог. Басы
кіріс файл ашу
шығыс файл ашу
кіріс фалдан мәлімет оқуды анықтау
шығыс файлға нәтиже жазуды анықау
кіріс файлдан мәліет оқу
і парам-і S –сөзінің ұзындығына дейін (2*ге кем) өзгереді
тақ нөмірлі символдар тексеріледі егер олар ab болса К-ның мәні бірге аратады.
Нәтиже шығыс файлга жазылады
Кіріс файлды жабу
Шығыс файлды жабу
Прог. Соңы
program D;
var
fInput: file of String;
fOutput: file of Byte;
S, SubS: String;
i, n: Byte;
bool: Boolean;
begin
assign(fInput,’c:dD.in’); {$I+} reset(fInput) {$I-};
assign(fOutput,’c:dD.out’); rewrite(fOutput);
read(fInput, S);
SubS:= ”; bool:= true; n:= 0;
for i:= 1 to length(S) do
begin
if bool then
begin
SubS:= SubS + S[i];
if length(SubS) > 1 then
if SubS[length(SubS)-1] + SubS[length(SubS)] = ‘ab’ then
n:= n + 1;
end;
bool:= not(bool);
end;
writeln(n);
write(fOutput, n);
readln;
close(fInput);
close(fOutput);
end.
Бұл нұсқада нәтиже алдымен экранға шығады содан соң шығыс файлға жазылады. 

Кіріс файлынсыз нұсқасы:
program oku;
var
s,s1: String;
i,n:integer;
begin
read(S);writeln(s);i:=1;
while i<=length(S) do
begin
s1:=s1+s[i]; i:=i+2;
end;
writeln(s1); i:=1;
while i<=length(S1) do
begin
if s1[i]+s1[i+1]=’ab’ then n:=n+1;
i:=i+2;
end;
writeln(n);
readln;
end.

Е есебі. Қайтадан тақта.

Енгізу файлының аты / имя входного файла: Е.in
Шығару файлының аты / имя выходного файла:Е.out

NxM шақмат тақтасы берілген. Сізге бір-бірін ұрмайтындай қанша максимал ферзілер санын қоюға болатынын анықтайтын программа жазу керек.

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

А.in А.out Комментарий
8, 8 8 8 х 8 шақмат тақтасында бір-бірін ұрмайтын 8 ферзі қоюға болады.

Есептің программасы: Бұл есеп кең тараған белгілі алгоритм бойынша жазылады. http://programmersforum.ru/showthread.php?t=27345

Е есебі  Ферзі

program zadE_8Ferz02;
uses
SysUtils;
Const N = 8; // Клеток
M = 8; // Ферзей
Type Queen = record
X,Y : Integer;
End;

Var A : Array[1..N, 1..N] Of Integer;
K : Array[1..M] Of Queen;
I,J,Q,X,Y : Integer;

Procedure ClearQueen;
Var I : Integer;
Begin
For I := 1 To M Do
Begin
K[I].X := 0;
K[I].Y := 0;
End;
End;

Procedure ShowQueen;
Var I : Integer;
Begin
For I := 1 To M Do
WriteLn(‘Q’,I, ‘ [‘, K[I].X, ‘,’, K[I].Y, ‘]’);
End;

Procedure SetQueen;
Begin
For I := 1 To M Do
If (K[I].X <> 0) And (K[I].Y <> 0) Then
A[K[I].X, K[I].Y] := I;
End;

Procedure ClearArray;
Var I,J : Integer;
Begin
For I := 1 To N Do
For J := 1 To N Do
A[I, J] := 0;
End;

Procedure ShowArray;
Var I,J : Integer;
Begin
For I := 1 To N Do
Begin
For J := 1 To N Do
Write(A[I, J]:3);
WriteLn;
End;
End;

Procedure SetArray(X,Y : Integer);
Var I,J : Integer;
Begin
For I := 1 To N Do Inc(A[I,Y]);
For I := 1 To N Do Inc(A[X,I]);
For I := -N To N Do
If (X+I>=1) And (X+I<=N) And (Y+I>=1) And (Y+I<=N) Then
Inc(A[X+I,Y+I]);
For I := -N To N Do
If (X+I>=1) And (X+I<=N) And (Y-I>=1) And (Y-I<=N) Then
Inc(A[X+I,Y-I]);
End;

Function CountArray:Integer;
Var I,J,S : Integer;
Begin
S := 0;
For I := 1 To N Do
For J := 1 To N Do
If A[I, J] = 0 Then Inc(S);
CountArray := S;
End;

Begin

ClearArray;
ClearQueen;

Q := 1;
I := 1;

While (Q <= M) Do
Begin
X := Trunc((I-1)/N)+1;
Y := I-N*(X-1);
If A[X,Y] = 0
Then
Begin
SetArray(X,Y);
K[Q].X := X;
K[Q].Y := Y;
Inc(Q);
End
Else Inc(I);

If I > N*N
Then
Begin
Dec(Q);
I := 1+((K[Q].X – 1) * N + K[Q].Y);
K[Q].X := 0;
K[Q].Y := 0;

ClearArray;
For J := 1 To Q-1 Do SetArray(K[J].X,K[J].Y);
End;

End;
ShowQueen;
ClearArray;
SetQueen;
ShowArray;
readln;
end.

F есебі. Теңдеу.

Енгізу файлының аты / имя входного файла: F.in
Шығару файлының аты / имя выходного файла: F.out

ax+bx=c теңдеуі бірліген. Қанша әртүрлі (х,у) жұп, бүтін сандар болатын теңдеудің шешімі бар? Егер шексіз көп болса -1 санын шығарыңыз.

Мәліметтерді енгізу форматы: Енгізу файлының бірінші үш бүтін сан a, b, c  (-1000<=a, b, c <=1000) берілген.
Мәліметтерді шығару форматы: Есептің жауабын шығарыңыз.
Мысалы / пример:

А.in А.out Комментарий
3 4 5 -1 (-3,4), (7, -4),…

Есептің программасы: Бұл программада қолданушы х-тің интервалын енгізу керек. Егер b=0 болса шексіздік орын алатыны математикадан белгілі екені ескерілген.

F есебі. Теңдеу

program zadF_tendeu;
var a,b,c,x,n:integer;
y:real;
label 10;

begin
write(‘engiz a, b, c ‘);
read (a,b,c);
if b=0 then begin  writeln(‘-1’);goto 10; end;
writeln(‘engiz max x= ‘);
read (n);
for x:=-n to n do
begin
y:=(c-(a*x))/b;
if Frac(y)=0 then write(‘ (‘,x,’ ‘,y,’)  ‘);
end;
10:end.

Check Also

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

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

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

  1. Сіздің нұсқаларыңыз тиімсіз. Менің оқушым осы есептердің әр қайсысын 10-15 жолға сыйдырды 🙂

  2. Сол есептеріңізді осында жаряласңыз, қайсысы тиімсіз екенін өзіміз қарап білер едік.

  3. Құрметті әріптестер бұл сайт маған қатты ұнады. Сіздерге шығармашылық табыс тілеймін.

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

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

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