Информатика п?нінен олимпиада есептері, шы?ару жолымен

Информатикадан аудандыK олимпиада есептері шыCаруларымен. 8-9 сынып. ІІ-тур.
D есебі ОрындыKтар Jатарда N орындыKтар тaр. Анда-санда адам келіп, бос орындыKтарыныS біріне отырады. Адам отырCанда оныS барлыK к™ршілес орындыKтарда отырCан адамдар тaрып кетеді. ЕS к™п дегенде Kанша орындыK бос емес болуы м_мкін? М‰ліметтерді енгізу форматы Енгізу файлдыS бірінші жолында б_тін сан N (1 <= N <= 1000) беріледі М‰ліметтерді шыCару форматы ЕсептіS жауабын шыCарыSыз. Мысал / Пример
D.in
D.out
Комментарий

3
2
101, осында 1 бос емес орындыK, 0 бос. 101, где 1 это занятый стул, 0 незанятый.

Задача D Стулья В ряд стоят N стульев. Время от времени подходит человек и садится на один из свободных стульев. При этом все соседи (если такие есть) встают и уходят. Какое наибольшее число стульев может оказаться занятым, если сначала все они свободны? Формат входных данных Первая строка входного файла содержит целое число N (1 <= N <= 1000). Формат выходных данных Выведите ответ к задаче.
Шешуі: ЖеSіс ШоSбаев 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 саннан тaратын тізбек беріледі. Осы сандарды екіден Kос алып к™бейткенде еS к™п дегенде Kанша шыCатынын табыSыз. М‰ліметтерді енгізу форматы Енгізу файлдыS бірінші жолында б_тін сан N (1 <= N <= 1000) беріледі. Келесі жолда ‰рKайсысы модулі бойынша 1000-нан кіші немесе теS, б_тін N сандар беріледі. М‰ліметтерді шыCару форматы ЕсептіS жауабын шыCарыSыз. Мысал / Пример
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. Формат выходных данных Выведите ответ к задаче. Шешуі: ЖеSіс ШоSбаев
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 екі жолдар берілген. Осы с™здердіS бірініS ‰ріптерін орын ауыстырып, екі с™зді теSестіруге бола ма? М‰ліметтерді енгізу форматы Енгізу файлдыS бірінші жолында аCылшын ‰ліпбиініS кіші ‰ріптерінен тaратын A жолы  беріледі (1 <= |A| <= 1000). Екінші жолда д‰л осы форматта B жолы беріледі (1 <= |B| <= 1000). М‰ліметтерді шыCару форматы Егер с™здердіS бірініS ‰ріптерін орын ауыстырып, екі с™зді теSестіруге болатын болса, “Yes” деген жолы шыCарыSыз немесе “No” деп кері жаCдайда. Мысал / Пример
F.in
F.out
Комментарий

Bca cba
Yes


Ada dada
No


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

Осы есептердіS С++ -те жазылCан программасы (Г_лжан Шажабаева, Алматы.) 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; }

Заголовок 115