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

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

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

Задача D Стулья
В ряд стоят N стульев. Время от времени подходит человек и садится на один из свободных стульев. При этом все соседи (если такие есть) встают и уходят. Какое наибольшее число стульев может оказаться занятым, если сначала все они свободны?
Формат входных данных
Первая строка входного файла содержит целое число N (1 <= N <= 1000).
Формат выходных данных
Выведите ответ к задаче.

Шешуі: Жеңіс Шоңбаев
program Stul;
var a,b:integer; D1,D2:text;  c,i:integer;
begin
Assign (D1,’D.in’);
Assign (D2,’D.out’);
Reset(D1);
Rewrite(D2);
a:=0;
Readln(D1,b);
c:=2;
if (b mod 2) = 0 then a:= b /c; else a:= (b+1)/c
Writeln(D2,a);
Close (D1);
Close (D2);
end.


E есебі Көп сандар
N саннан тұратын тізбек беріледі. Осы сандарды екіден қос алып көбейткенде ең көп дегенде қанша шығатынын табыңыз.
Мәліметтерді енгізу форматы
Енгізу файлдың бірінші жолында бүтін сан N (1 <= N <= 1000) беріледі. Келесі жолда әрқайсысы модулі бойынша 1000-нан кіші немесе тең, бүтін 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 <= 1000). В следующей строке задаются N целых чисел, каждое из которых по модулю меньше или равно 1000.
Формат выходных данных
Выведите ответ к задаче.
Шешуі: Жеңіс Шоңбаев

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 есебі Сөздер
A және B екі жолдар берілген. Осы сөздердің бірінің әріптерін орын ауыстырып, екі сөзді теңестіруге бола ма?
Мәліметтерді енгізу форматы
Енгізу файлдың бірінші жолында ағылшын әліпбиінің кіші әріптерінен тұратын A жолы  беріледі (1 <= |A| <= 1000). Екінші жолда дәл осы форматта B жолы беріледі (1 <= |B| <= 1000).
Мәліметтерді шығару форматы
Егер сөздердің бірінің әріптерін орын ауыстырып, екі сөзді теңестіруге болатын болса, “Yes” деген жолы шығарыңыз немесе “No” деп кері жағдайда.
Мысал / Пример

F.in F.out Комментарий
Bca
cba
Yes
Ada
dada
No

Задача F Слова
Заданы две строки A и B. Можно ли переставить буквы в одном из слов так, чтобы слова стали одинаковыми?
Формат входных данных
Первая строка входного файла содержит строку A, состоящую из строчных букв английского алфавита (1 <= |A| <= 1000). Вторая строка содержит строку B в таком же формате (1 <= |B| <= 1000).
Формат выходных данных
Выведите “Yes”, если можно переставить буквы в одном из слов, чтобы слова стали одинаковыми или “No”, иначе.

Шешуі: Жеңіс Шоңбаев

begin
j:=1;
f:=false;
while(j<=length(s2)) and not f do
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.


Осы есептердің С++ -те жазылған программасы (Гүлжан Шажабаева, Алматы.)
D esebi
#include
#include
#define fname “d”
using namespace std;
int main(){
freopen(fname”.in”,”r”,stdin);
freopen(fname”.out”,”w”,stdout);
int n;
cin >> n;
if (n % 2 == 1) n++;
cout << n/2 << endl;
return 0;
}

E esebi
#include
#include
#include
#include
#define fname “e”
using namespace std;
int a[1000];
int main(){
freopen(fname”.in”,”r”,stdin);
freopen(fname”.out”,”w”,stdout);
int n;
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
sort(a,a+n);
cout << max(a[0]*a[1] , a[n-2]*a[n-1]);
return 0;
}

F esebi
#include
#include
#define fname “f”
using namespace std;
char s[1000];
char ss[1000];
int f[26] = {0};
int ff[26] = {0};
int main(){
freopen(fname”.in”,”r”,stdin);
freopen(fname”.out”,”w”,stdout);
cin >> s;
for (int i = 0; i < (int)strlen(s); i++) f[s[i]-‘a’]++; cin >> ss;
for (int i = 0; i < (int)strlen(ss); i++)
ff[ss[i]-‘a’]++;
for (int i = 0; i < 26; i++)
if (f[i] != ff[i]) {cout << “No”; return 0;}
cout << “Yes”;
return 0;
}

Check Also

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

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

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

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

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