Olimpiada de informatică și etapa școlară TIC. textele problemelor olimpiadei. Descrierea sistemului de evaluare a soluțiilor problemelor

Olimpiada integrală rusească pentru școlari în știința informației

Etapa școlară

clasa a 9-a

A1.

Câte zerouri semnificative există în notație binară pentru numărul 48?

1) 1 2) 2 3) 4 4) 6

A2.

Presupunând că fiecare caracter este codificat de 16 biți, estimați volumul de informații al următoarei fraze Pușkin în codificare Unicode:

Un obicei ne-a fost dat de sus: este un substitut al fericirii.

1) 44 de biți 2) 704 de biți 3) 44 de biți 4) 704 de biți

A3.

Calculați suma numerelor x și y, cu x = 271 8, y = 11110100 2 . Prezentați rezultatul în sistem hexazecimal Socoteala.

1) 151 16 2) 1AD 16 3) 412 16 4) 10B 16

A4.

Determinați valoarea unei variabile c după executarea următorului fragment de program:

a:= 100;

b:= 30;

a:= a – b*3;

dacă a > b atunci

C:= a – b

altfel c:= b – a;

1) 20 2) 70 3) –20 4) 180

A5.

Pentru ce număr X este adevărată afirmația? X > 1  ((X

1) 1 2) 2 3) 3 4) 4

A6.

Simbolul F indică unul dintre următoarele: expresii logice din trei argumente: X, Y, Z. Se dă un fragment din tabelul de adevăr al expresiei F (vezi tabelul din dreapta). Care expresie se potrivește cu F?

1) X  ¬Y  Z 2) X  Y  Z 3) X  Y  ¬Z 4 ) ¬X  Y  ¬Z

A7.

Tabelul arată costul transportului de pasageri între vecini aşezări. Furnizați o schemă care se potrivește cu tabelul.

A8.

Profesorul a lucrat în catalog
D:\Materiale pentru lectii\clasa a X-a\Lucrari practice.
Apoi m-am mutat la un nivel superior în arborele de directoare și am coborât în ​​subdirector
Prelegeri și a șters fișierul din el Introducere . Cum este Numele complet fișier pe care profesorul l-a șters?

1) D:\Materiale de lecție\clasa a X-a\Introducere

2) D:\Materiale pentru lecții\clasa a X-a\Prelegeri\Introducere

3) D:\Materiale de lecție\Prelegeri\Introducere

4) D:\Materiale de lecție\Introducere\Prelegeri

A9.

Mai jos sunt fragmente din tabelele bazei de date a elevilor din școală:

Codul clasei

Clasă

1-A

3-A

4-A

4-B

6-A

6-B

6-B

9-A

10-A

Nume de familie

Codul clasei

Înălţime

Ivanov

Petrov

Sidorov

Koshkin

Lozhkin

Nojkin

Tarelkin

Miskin

Chashkin

În ce clasă se află cel mai înalt elev?

1) 3-A 2) 4-A 3) 6-A 4) 9-A

A10.

Rezoluția ecranului monitorului este de 1024 x 768 pixeli, adâncimea culorii este de 16 biți. Care este cantitatea necesară de memorie video pentru acest mod grafic?

1) 6 MB 2) 256 octeți 3) 4 KB 4) 1,5 MB

A11.

Celula C2 conține formula=$E$3+D2 . Ce formă va lua formula după ce celula C2 este copiată în celula B1?

1) =$E$3+C1 2) =$D$3+D2 3) =$E$3+E3 4) =$F$4+D2

A12.

Este dat un fragment din foaia de calcul:

B1+1

A1+2

B2-1

După efectuarea calculelor, a fost construită o diagramă folosind valorile intervalului de celule A1:A4. Indicați diagrama rezultată.

A13.

Un anumit interpret poate executa trei comenzi:

FD – deplasarea înainte cu un anumit număr de pași

RT – virați la dreapta cu numărul specificat de grade

REPETA - repeta comanda

Teme pentru etapa școlară a olimpiadei de informatică pentru clasele 7-11


„Clasa a VII-a-VIII_I”

Olimpiada integrală rusească pentru școlari în informatică. 2017 -2018.

Etapa municipală, clasele 7-8

Problema A. Autobuze

N copii şi M K

Format fișier de intrare

N, MȘi K

Format de fișier de ieșire

Date de intrare

Ieșire

Problema lui V. Lavochka

Format fișier de intrare

L- lungimea bancului si K

Urmează a doua linie K

Format de fișier de ieșire

Date de intrare

Ieșire

13 4
1 4 8 11

14 6
1 6 8 11 12 13

Problema C. Alegeri

N N simboluri - plusuri și minusuri.

valabil buletine de vot.

Format fișier de intrare

N- numarul de partide si M N M

În cele ce urmează M N

Format de fișier de ieșire

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

+--
+--
-+-
+-+

+
-
-
-
-

Format fișier de intrare

Format de fișier de ieșire

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

Problema E. Pietre

Ei sunt pe masa N

    1 sau 2 pietre daca N divizibil cu 3;

    1 sau 3 dacă N

    1, 2 sau 3 dacă N

Format fișier de intrare

Introduceți numărul întreg 0 N

Format de fișier de ieșire

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

Pagina 6 din 6

Vizualizați conținutul documentului
„9-11 clasa_I”

Olimpiada integrală rusească pentru școlari în informatică. 2017 -2018.

Tur municipal, clasele 9-11

Problema A. Tarife

A va veni înaintea gândacului nr. B".

Format fișier de intrare

KN K. Fiecare dintre următoarele N A, B, C, D, fara sa depaseasca KA va veni înaintea gândacului nr. B" și "Gândacul nr. C va veni înaintea gândacului nr. D".

Format de fișier de ieșire

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

3 2
2 1 2 3
1 2 3 2

3 4
1 2 1 3
1 2 3 1
1 2 2 3
1 2 3 2

Problema B. Curse de mașini

n

n xi vi

formatul de intrare

n n xiȘi vi i xivi 1000).

Format de iesire

Exemple

Date de intrare

Ieșire

Sarcina C. Testare

Format fișier de intrare

n (1 ≤ n A 1 , A 2 , . . . , A n n numere întregi b 1 , b 2 , . . . , b n A iȘi b i inegalitățile 1 ≤ sunt adevărate A i , b i ≤ 10.

Format de fișier de ieșire

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

Problema D. Competiții de karting

n m

Necesar

Format fișier de intrare

nȘi m (1nm 100). Ulterior 2 n

A doua linie contine m m

Format de fișier de ieșire

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

Sumaher
2 1 1

Barikelo
2 1 2

Problema E. Diplome

n w- în lățime și h- in inaltime.

w pe h

Necesar

Format fișier de intrare

w, h, n (1whn 109).

Format de fișier de ieșire

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

ȘI ilustratie de exemplu:

Pagina 5 din 5

Vizualizați conținutul documentului
„Recomandări metodologice pentru analiza problemelor olimpiadei”

Scena municipală Olimpiada integrală ruseascăşcolari la informatică în anul 2017-2018 an academic

Clasa 7-8

Problema A. Autobuze.

Pentru a ajunge la tabăra de sănătate pentru copii, organizatorii au decis să comande autobuze. Se știe că vor merge în tabără N copii şi M adultii. Fiecare autobuz poate găzdui K Uman. Trebuie să existe cel puțin doi adulți în fiecare autobuz în care călătoresc copiii.

Stabiliți dacă va fi posibil să trimiteți toți copiii și adulții în tabără și, dacă da, care este numărul minim de autobuze necesare pentru a comanda acest lucru.

Format fișier de intrare

Intrarea programului primește 3 numere naturale, scrise separate printr-un spațiu - N, MȘi K, fiecare dintre ele nu depășește 10.000.

Format de fișier de ieșire

Tipăriți numărul de autobuze care urmează să fie comandate. Dacă este imposibil să trimiți pe toți în tabără, tipăriți 0 (zero).

Exemple de fișiere de intrare și ieșire

Date de intrare

Ieșire

Soluţie.

Algoritm:

În primul rând: trebuie să luăm în considerare faptul că K poate lua o valoare mai mică sau egală cu 2. În acest caz, ar trebui să iasă 0, deoarece vom fi forțați să punem adulți în fiecare autobuz (și copiii nu vor pleca niciodată). Acum luați în considerare cazul în care K este mai mare de doi: în acest caz, exact n/(k-2) autobuze vor fi necesare pentru a transporta copiii. Rețineți că dacă n nu este divizibil cu k-2, atunci veți avea nevoie de încă o magistrală. De asemenea, nu vom putea pleca dacă numărul de adulți împărțit la doi este mai mic decât numărul de autobuze necesare pentru transportul copiilor. În toate celelalte cazuri, răspunsul va fi (m+n)/k, dar dacă (m+n) nu este divizibil egal cu k, atunci mai există o magistrală.

Program:

var a,b,c,k,n,p:întreg;

k:=a div(c-2); //2

dacă un mod (c-2) 0 atunci inc(k);

dacă (a+b) mod c 0 atunci inc(k);

Sarcina B. bănci

Băncile din parc sunt dispuse astfel. Mai multe blocuri de granit cubice identice sunt așezate pe rând, iar pe ele este așezată o placă de granit (vezi poza). Arhitectul modernist a decis că ar fi mai interesant ca toate băncile să aibă o aranjare diferită a picioarelor din bloc de granit (și nu neapărat simetrice). În același timp, acestea sunt amplasate astfel încât placa să nu cadă: pentru aceasta este suficient să existe cel puțin un bloc de granit sau o parte din acesta atât la stânga, cât și la dreapta centrului plăcii (în special , dacă centrul plăcii cade pe mijlocul unui bloc, atunci la stânga și la dreapta centrului plăcii se află o parte a blocului, iar placa nu cade).

Tâlharii au descoperit că pot scoate unul câte unul blocurile de granit aflate pe margine (atât în ​​stânga, cât și în dreapta). Vor să scoată cât mai multe blocuri de sub bancă fără ca aceasta să cadă (blocurile rămase nu pot fi mutate). Stabiliți ce blocuri ar trebui să părăsească.

Format fișier de intrare

Prima linie a introducerii conține două numere: L- lungimea bancului si K- numărul picioarelor bloc de granit. Ambele numere sunt naturale și nu depășesc 10.000.

Urmează a doua linie K diverse numere întregi nenegative care specifică poziția fiecărui picior. Poziția piciorului este determinată de distanța de la marginea stângă a plăcii până la marginea stângă a piciorului (piciorul este un cub care măsoară 1x1x1). Picioarele sunt listate de la stânga la dreapta (adică, începând cu piciorul cu distanța cea mai apropiată de marginea stângă).

Format de fișier de ieșire

Trebuie să enumerați picioarele pe care hoții trebuie să le lase în urmă. Pentru fiecare picior, trebuie să returnați poziția sa așa cum este specificat în datele de intrare. Picioarele trebuie listate de la stânga la dreapta, în ordinea în care apar în datele de intrare.

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

13 4
1 4 8 11

14 6
1 6 8 11 12 13

Al doilea exemplu corespunde băncii din imagine.

Soluţie.

Algoritm:

Să notăm coordonatele (poziția)i picioare ca di. Să găsim numerele stângaȘi dreapta- numerele piciorului din dreapta, din care cel puțin o parte este situată la stânga mijlocului băncii și, respectiv, ale piciorului cel mai din stânga, din care cel puțin o parte este situată la dreapta mijlocului băncii, respectiv:stânga= max i 2 di L, dreapta=min i 2 (di+1) L. Dacă până la urmă stânga= dreapta(acesta este L ciudat și i di= 2 L ), atunci trebuie să scoateți un numărdstânga, altfel - mai întâidstânga, apoi ddreapta.

Program:

var L,k,n,i: longint;//0..10 000

a: matrice de boolean;

pentru i:=1 la k începe

dacă (L mod 2 0) și (a) atunci începe

pentru i:=(L-1) div 2 downto 0 do

dacă a[i] atunci începe

pentru i:=l div 2 la L-1 do

dacă a[i] atunci începe

ProblemaC. Alegeri

La alegerile pentru Duma de Stat a fost inclusă în buletinele de vot N petreceri. Un scaner electronic de buletine de vot transmite informații despre fiecare buletin de vot către următorul format: dacă există un semn în celula corespunzătoare a buletinului de vot, atunci scanerul transmite + (plus), în caz contrar transmite - (minus). Deci trece secvența de la N simboluri - plusuri și minusuri.

Buletinul de vot este considerat valabil dacă există o notă într-o singură celulă. Buletinele de vot nevalide nu sunt incluse în numărarea rezultatelor alegerilor.

Un partid intră în Duma de Stat numai dacă câștigă cel puțin 7% din numărul total valabil buletine de vot.

Este necesară afișarea numerelor (în ordinea în care sunt enumerate pe buletinul de vot) ale tuturor partidelor care sunt alese în Duma de Stat.

Format fișier de intrare

Prima linie de intrare conține două numere separate printr-un spațiu: N- numarul de partide si M- numărul de buletine de vot. Ambele numere sunt naturale, N M

În cele ce urmează M Rândurile conțin informații primite din buletinele de vot. Fiecare linie este o secvență de N caractere + sau - (fără spații).

Este garantat că există cel puțin un buletin de vot valabil.

Format de fișier de ieșire

Tipăriți, separate prin spații, numărul partidelor care au trecut în Duma, în ordine crescătoare. Dacă niciuna dintre părți nu intră în Duma, nimic nu trebuie retras.

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

+--
+--
-+-
+-+

+
-
-
-
-

Soluţie.

Algoritm:

Hai să scriem functie speciala care, pentru o linie de vot dat, returnând numărul candidatului selectat în acest buletin de vot sau 0 pentru un buletin de vot nevalid (pentru a face acest lucru, trebuie doar să parcurgeți linia de vot o dată, amintindu-și răspunsul curent). Acum pentru fiecare buletin de vot numim cine functioneaza din el si, daca rezultatul nu este egal cu zero, crește cu 1 numărK(numărul de buletine de vot valabile) șigwho(numărul de voturi valabil exprimate pentru partidul cu numărul egal cu rezultatul care funcţionează). Tot ce rămâne este să afișeze totuli astfel încât 100 gi 7 K.

Program:

($h+)

steag :boolean ;

a:array de longint;

n,m,max,k,i,j:longint;

pentru i:=1 la m do

pentru j:=1 la lungime(e) do

dacă s[j]="+" atunci

dacă nu steag atunci

pentru j:=1 la lungime(e) do

dacă s[j]="+" atunci

pentru i:=1 la n do

dacă a[i]=max*0.07 atunci

Problema D. Bilet de tren

În noile trenuri de elită, fiecare pasager are dreptul la un loc. Desigur, numărul de locuri este limitat și poate să nu fie suficient pentru toată lumea. Traseul trenului trece prin stații N, numerotate de la 0 la N-1. Când o persoană dorește să cumpere un bilet, sună două numere x și y - numerele stațiilor de unde și unde vrea să meargă. Dacă în această zonă există cel puțin un loc în momentul achiziției, i se vinde un bilet, în caz contrar se afișează mesajul „fără bilete” și biletul nu este vândut. Sarcina ta este să scrii un program care să servească aceste tipuri de solicitări în ordinea în care ajung.

Format fișier de intrare

Prima linie conține trei numere N – numărul de stații (1 ≤ N ≤ 10.000), K – numărul de locuri din tren (1 ≤ K ≤ 1000) și M – numărul de cereri (1 ≤ M ≤ 50.000) . Următoarele M linii descriu interogări, fiecare dintre ele constând din două numere x și y (0 ≤ x

Format de fișier de ieșire

Pentru fiecare cerere, programul dumneavoastră ar trebui să producă un rezultat sub forma unui număr 0 dacă biletul nu a fost vândut și 1 dacă biletul a fost vândut. Fiecare rezultat ar trebui să fie pe o linie separată

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

Soluţie.

Algoritm:

Să ne imaginăm o matrice de lungime N în celula i-a din care vom stoca numărul de pasageri care au cumpărat deja un bilet și călătoresc de la stația i la (i+1).

Vom suporta un RMQ (arborele maxim) pentru o astfel de matrice cu posibilitatea de modificare (adăugare) rapidă pe un segment.

Acum, la procesarea fiecărei cereri, aflăm mai întâi maximul de pe segment, iar dacă acesta este mai mic de K (adică între fiecare pereche de stații de pe traseu există cel puțin una loc liber), vindem un bilet și executăm update(x, y-1, +1). În caz contrar, refuzăm să vindem biletul.

Program:

mas: matrice de longint;

n, m ,k, i, a, b, j, z:longint;

readln(n, k, m);

pentru i:= 0 la n-1 do

pentru i:=1 la m do

pentru j:= a la b-1 do

dacă mas[j]=0 atunci z:=5;

dacă z=5 atunci scrieți n("0")

Problema E. Pietre

Ei sunt pe masa N pietre. În timpul unei ture un jucător poate lua

    1 sau 2 pietre daca N divizibil cu 3;

    1 sau 3 dacă N când este împărțit la 3, lasă un rest de unu;

    1, 2 sau 3 dacă N Când este împărțit la 3, lasă un rest de doi.

Fiecare mișcare poate fi făcută dacă sunt suficiente pietre. Cel care nu poate face o mișcare pierde.

Format fișier de intrare

Introduceți numărul întreg 0 N

Format de fișier de ieșire

Tipăriți 1 sau 2 – numărul jucătorului care va câștiga dacă jocul este jucat corect.

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

Soluţie.

Algoritm:

Fie (F[i] = 1) dacă primul câștigă și (F[i] = 2) dacă al doilea câștigă. Apoi rețineți că F=1,F=1 F = 2. Acum vom completa pur și simplu tabloul nostru F. Vom presupune că 1 este o poziție câștigătoare și 2 este una pierzătoare. Apoi, dacă putem trece de la poziția actuală într-o poziție pierzătoare, atunci este una câștigătoare, iar dacă ajungem doar în cele câștigătoare, atunci poziția noastră este una pierzătoare. Tot ce rămâne este să alergi prin bucla de la 4 la n. Și notează condițiile pentru diferiți multipli de 3. De fapt, atunci poți observa că pozițiile care sunt multipli de 3 pierd, iar toate celelalte sunt câștigătoare.

Program:

dacă(n mod 3 = 0) atunci

dacă(n mod 3 0) atunci

Sfârşit.

9 -11 Clasă

Problema A. Tarife

Înainte de începerea cursei cu gândaci, toți fanii au fost rugați să plaseze două pariuri pe rezultatele cursei. Fiecare pariu arată ca „Gândacul nr. A va veni înaintea gândacului nr. B".

Organizatorii cursei au decis să afle dacă gândacii pot ajunge într-o astfel de ordine încât fiecare fan să câștige exact un pariu din două (adică să fie adevărată exact una dintre cele două afirmații ale fiecărui fan). Se crede că doi gândaci nu pot ajunge la linia de sosire în același timp.

Format fișier de intrare

Prima linie a intrării conține două numere naturale separate prin spațiu: număr K, care nu depășește 10, este numărul de gândaci și numărul N, care nu depășește 100, este numărul de ventilatoare. Toți gândacii sunt numerotați de la 1 la K. Fiecare dintre următoarele Nșirul conține 4 numere naturale A, B, C, D, fara sa depaseasca K, separate prin spații. Acestea corespund tarifelor ventilatorului „Gandac nr. A va veni înaintea gândacului nr. B" și "Gândacul nr. C va veni înaintea gândacului nr. D".

Format de fișier de ieșire

Dacă puteți finaliza cursa astfel încât fiecare fan să câștige exact unul dintre cele două pariuri, atunci ar trebui să afișați numerele gândacilor în ordinea în care vor apărea în tabelul final de rezultate (mai întâi numărul gândacilor care a venit mai întâi, apoi numărul gândacului care a venit al doilea etc.) într-o linie separată prin spații. Dacă există mai multe astfel de opțiuni, tipăriți oricare dintre ele.

Dacă rezultatul dorit nu poate fi atins, imprimați un număr 0.

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

Soluţie.

Algoritm:

Să trecem prin toate permutările numerelor de la 1 laK- toate rezultatele posibile ale cursei (ordinea de sosire a gandacilor). Pentru fiecare permutareO(N) Să verificăm dacă este adevărat că, în acest caz, fiecare fan va câștiga exact un pariu. Dacă acest lucru este adevărat, imprimăm permutarea curentă și ieșim din program. La sfârșitul programului tipărim 0 (programul nu s-a încheiat mai devreme, prin urmare răspunsul nu a fost găsit).

Program:

Tstavka = record

a1, a2, b1, b2: longint;

i, n, k, e, s, p, w: int64;

a: matrice de int64;

st: matrice de Tstavka;

modificarea procedurii (x: longint);

pentru i1:= x + 1 la x + ((k - x) div 2) do

a := a;

a := t;

nevoie, ch, t, i1: longint;

pentru i1:= k - 1 downto 1 do

dacă este nevoie = 0 atunci

pentru i1:= k downto 1 do

dacă un atunci

a := a;

// assign(input,"input.txt"); resetare(intrare);

pentru i:= 1 la n do

citeste(st[i].a1, st[i].a2, st[i].b1);

readln(st[i].b2);

dacă (k=1) și (st[i].a1=1) și (st[i].a2=1) și (st[i].b1=1) și (st[i].b2=1) apoi

pentru i:= 1 la k face a[i] := i; s:= 1;

pentru i:= 1 la k do s:= s * i;

pentru e:= 1 la s do

pentru w:= 1 la n do

dacă ((a.a1] a.a2]) și (a.b1] a.b2])) atunci

if go = adevărat atunci

pentru i:= 1 la k do

dacă a[i] = p atunci

pentru i:= 1 la k do

dacă a[i] = k atunci

Problema B. Curse de mașini

Ca orice băiat, Fedya are mașini de jucărie. Cu toate acestea, a fost mai norocos decât un băiat obișnuit - totul n mașinile lui sunt controlate radio. Toată ziua poate organiza diverse curse de mașini și se poate juca cu prietenii.

Dintre toate tipurile de curse, Fedya preferă cursele în linie dreaptă. ÎN acest format Traseul competiției are forma unei linii drepte și este nesfârșit (concurența continuă până când Feda se sătura de el). Iniţial fiecare dintre n mașinile se află la o oarecare distanță de start - are un avans xi metri. La comandă, toate mașinile își încep mișcarea de la start, în timp ce fiecare mașină se mișcă în timpul cursei cu o viteză constantă vi metri pe secundă. Toate mașinile se mișcă în aceeași direcție - se îndepărtează de la început.

Feda a primit recent o cameră video și vrea să surprindă momentele importante ale cursei. În primul rând, Fedya vrea să surprindă prima depășire a cursei, adică primul moment de timp în care două mașini se află la aceeași distanță de start.

Deoarece acest eveniment poate fi așteptat pentru o perioadă foarte lungă de timp, Fedya vrea să seteze camera la pornire automatăîn timp ce depăşeşte. Cu toate acestea, Fedya de unul singur nu poate găsi timpul care va trece de la începutul cursei până la momentul primei depășiri. Ajută Feda - scrie un program care găsește valoarea necesară.

formatul de intrare

Prima linie a fișierului de intrare conține un singur număr n- numărul de mașini pe pistă (2 n 100). Fiecare dintre următoarele n liniile conțin două numere întregi xiȘi vi- distanta de la start (in metri) si viteza masinii i(în metri pe secundă), respectiv (1 xivi 1000).

Inițial, nu există două mașini situate în același punct. Este garantat că cel puțin o depășire va avea loc în timpul cursei.

Format de iesire

În fișierul de ieșire, tipăriți numărul de secunde care vor trece din momentul începerii până în momentul primei depășiri, cu o precizie de cel puțin 5 cifre după virgulă.

Exemple

Date de intrare

Ieșire

Explicație pentru primul exemplu:

În figură, punctul A indică locul de depășire.

Soluţie.

Algoritm:

1) Mașina a va ajunge într-o zi din urmă cu mașina b dacă viteza sa este mai mare și coordonatele sale sunt mai mici

2) Să parcurgem fiecare mașină cu fiecare și dacă o mașină o depășește vreodată pe alta (punctul 1), atunci vom număra această dată. Dintre toate astfel de valori, alegem minimul. Acesta va fi răspunsul

Program:

var a,b:arrayof longint;

c:arrayofreal;

j,n,i,k,l:longint;

pentru i:=1 la n do

citeste(a[i],b[i]);

pentru i:=1 la n do

pentru j:=1 la n face

dacă (ij) și (a[i]b[j]) atunci începe

c[k]:=(a[j]-a[i])/(b[i]-b[j]);

pentru i:=2 la k face

scrieln(min:1:5);

Sarcina C. Testare

Una dintre modalitățile de monitorizare a cunoștințelor elevilor este efectuarea de teste. În timpul testării, de obicei sunt adresate mai multe întrebări, pentru fiecare dintre acestea trebuie să alegeți una dintre opțiunile de răspuns. În acest scop, testului i se oferă un formular special cu întrebări și opțiuni de răspuns.

Testarea poate fi efectuată simultan pentru suficient cantitate mare oameni, așa că se pune întrebarea despre prelucrare eficientă formulare completate de cei care au luat la testare. În Flatland, ei încearcă să rezolve această problemă folosind tehnologia Informatiei Pentru prelucrare automată rezultatele testului.

Primul pas este să scrieți un program care să calculeze scorurile la test pe baza informațiilor cunoscute despre răspunsurile corecte la întrebări și răspunsurile date de testamentul. Sarcina ta este să scrii un astfel de program.

Format fișier de intrare

Prima linie a fișierului de intrare conține numărul n (1 ≤ n≤ 100000) întrebări din test. A doua linie a fișierului de intrare conține n numere întregi A 1 , A 2 , . . . , A n- numere opțiuni corecte răspunsuri la fiecare dintre întrebări. A treia linie a fișierului de intrare conține n numere întregi b 1 , b 2 , . . . , b n- numărul de opțiuni alese de testatorul. Pentru numere A iȘi b i inegalitățile 1 ≤ sunt adevărate A i , b i ≤ 10.

Format de fișier de ieșire

În fișierul de ieșire, tipăriți numărul de întrebări la care candidatul a dat răspunsul corect.

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire


Soluţie.

Algoritm:

O sarcină foarte ușoară. Citim datele în două matrice. Apoi rulăm bucla până la n și verificăm: dacă i-lea element Prima matrice este egală cu i-lea element al celei de-a doua matrice, apoi creștem contorul cu 1.

Program:

a,b:matrice de octeți;

assign(input, "input.txt");

atribui(ieșire, „ieșire.txt”);

rescrie (ieșire);

pentru i:=1 la n do

pentru i:=1 până la n începe

dacă a[i]=b[i] atunci

Sfârşit.

SarcinăD. Competiții de karting

După următoarea etapă a campionatului mondial de Formula A în curse cu roți deschise, concurenții s-au adunat într-o cafenea pentru a discuta rezultatele. Și-au amintit că în tinerețe nu au concurat în mașini mari, ci în karturi - mașini sport dimensiuni mai mici.

Prietenii au decis să afle câștigătorul într-una dintre cursele de kart. Câștigătorul cursei a fost șoferul al cărui timp total pentru parcurgerea tuturor tururilor pistei a fost minim.

Deoarece rezultatele finale nu au fost păstrate, fiecare dintre nși-a amintit de participanții acelei curse și a notat rezultatele finalizării fiecăruia dintre ei m tururi ale pistei. Din păcate, folosind aceste informații, concurenților le-a fost dificil să calculeze câștigătorul acelei curse. Din această cauză, ți-au cerut să o faci.

Necesar scrie un program care să calculeze câștigătorul cursei de kart despre care vorbeau concurenții.

Format fișier de intrare

Prima linie a fișierului de intrare conține două numere întregi nȘi m (1nm 100). Ulterior 2 n liniile descriu parcurgerea traseului de către fiecare participant. Descrierea participantului a trecerii traseului constă din două rânduri. Prima linie conține numai numele participantului folosind litere latine(minuscule și majuscule). Numele fiecărui membru este diferit, cu litere mici și majuscule diferite în numele lor.

A doua linie contine m numere întregi pozitive, unde fiecare număr este timpul în care un anumit participant a finalizat fiecare dintre ele m tururi ale pistei (fiecare dintre aceste numere nu depășește 1000). Lungimea numelui fiecărui participant nu depășește 255.

Format de fișier de ieșire

Fișierul de ieșire trebuie să afișeze pe cărți numele câștigătorului cursei. Dacă există mai mulți câștigători, trebuie să afișați numele oricăruia dintre ei.

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

Sumaher
2 1 1

Barikelo
2 1 2

Acordați atenție spațiului de la capăt ultima linie date de intrare.

Soluţie.

Algoritm:

Să creăm o linie separată pentru a stoca numele de familie al jucătorului cel mai bun rezultat, și o variabilă separată pentru a stoca acest rezultat. Apoi le atribuim rezultatele și numele primului călăreț, apoi citim rezultatele rămase și le comparăm cu maximul de pe acest pasși, dacă este necesar, schimbați-l pe acesta din urmă.

Program:

var n,m,i,j,x,sum,min:longint;

min:=maxlongint;

pentru i:=1 la n do

pentru j:=1 la m do

Sfârşit;

Sarcina E. Diplome

Când Petya era la școală, a participat adesea la olimpiade de informatică, matematică și fizică. Deoarece era un băiat destul de capabil și studia din greu, a primit diplome la multe dintre aceste olimpiade. Până la sfârșitul școlii acumulase n diplome și, după cum sa dovedit, toate aveau aceleasi marimi: w- în lățime și h- in inaltime.

Acum Petya studiază la una dintre cele mai bune universități rusești și locuiește într-un cămin cu colegii săi. A decis să-și decoreze camera atârnând diplomele de la olimpiada școlară pe unul dintre pereți. Întrucât este destul de dificil să atașați diplomele pe un perete de beton, a decis să cumpere o placă specială din lemn de balsa pentru a o atașa pe perete și să-i atașeze diplomele. Pentru ca acest design să arate mai frumos, Petya vrea ca placa să fie pătrată și să ocupe cât mai puțin spațiu pe perete. Fiecare diplomă trebuie plasată strict într-un dreptunghi de măsurare w pe h. Diplomele nu trebuie rotite la 90 de grade. Dreptunghiurile corespunzătoare diferitelor diplome nu trebuie să aibă puncte interioare comune.

Necesar scrie un program care calculează dimensiune minimă parte a consiliului de care va avea nevoie Petya pentru a-și plasa toate diplomele.

Format fișier de intrare

Fișierul de intrare conține trei numere întregi: w, h, n (1whn 109).

Format de fișier de ieșire

Răspunsul la sarcină trebuie să fie trimis în fișierul de ieșire.

Exemple de fișiere de intrare și de ieșire

Date de intrare

Ieșire

ȘI ilustratie de exemplu:

Soluţie.

Algoritm:

Din cauza restricțiilor mari asupra n,w,h liniar căutarea lungimii posibile a unei laturi a unui pătrat nu necesită timp, deci aceasta sarcina ar trebui rezolvat folosind căutarea binară pentru răspuns. Evident, dimensiunile plăcii variază de la min(w,h) la n * max(w,h). În O(1) este ușor de verificat dacă toate certificatele se încadrează într-un pătrat cu latura a (n

Program:

funcția maxwh (w2, h2:int64) :int64;

daca w2h2 atunci maxwh:=w2 altfel maxwh:=h2;

funcția maxd (w1, h1, mid1: int64): int64;

maxd:=(mid1 div w1)*(mid1 div h1);

salut, ia, mijloc: int64;

readln(w, h, n);

hi:=maxwh(w, h)*n;

mid:=(hi+lo) div 2;

dacă maxd(l, h, mijloc)

Vizualizați conținutul documentului
„Cerințe pentru desfășurarea olimpiadei de informatică”

Cerințe pentru desfășurarea și evaluarea etapei municipale a Olimpiadei

în informatică anul universitar 2017 – 2018. al anului.

Aceste cerințe au fost elaborate de comisia regională de discipline-metodologie pentru informatică și fac parte din cadrul de reglementare pentru Olimpiada din Rusia pentru școlari.

În conformitate cu Procedura de desfășurare a Olimpiadei Ruse pentru școlari (denumită în continuare procedura), aprobată prin ordin al Ministerului Educației și Științei din Rusia din 18 noiembrie 2013 nr. 1252 (înregistrat de Ministerul Justiției). al Rusiei la 21 ianuarie 2014, numărul de înregistrare 31060), astfel cum a fost modificat prin ordinul Ministerului Educației și Științei din Rusia din 17 martie 2015 nr. 249 (înregistrat de Ministerul Justiției al Rusiei la 7 aprilie 2015, înregistrare Nr. 36743) și prin ordinul Ministerului Educației și Științei din Rusia din 17 decembrie 2015 Nr. 1488 (înregistrat de Ministerul Justiției din Rusia la 20 ianuarie 2016, înregistrare Nr. 40659) următorul set de materiale pentru desfășurarea etapei municipale a olimpiadei rusești pentru școlari în informatică în anul universitar 2017-2018:

    textele problemelor olimpiadei;

    cerinţe pentru conducereși evaluarea etapei municipale a olimpiadei;

    sistem specializat de desfășurare a Olimpiadei, aflat pe sitehttp://informatics.mccme.ru ;

    instructiuni de lucru in sistem specializat organizarea Jocurilor Olimpice;

Olimpiada se desfășoară în rândul elevilor din clasele a 7-a, a 8-a, a 9-a, a 10-a, a 11-a. Sunt prezentate două seturi de teme de informatică: pentru clasele 7-8 și clasele 9-11.

Sunt stabiliți câștigătorii și premianții etapei municipale a Olimpiadei prin paralele.

Etapa municipală a olimpiadei se va desfășura folosind un sistem specializat de desfășurare a olimpiadelor aflat pe site http://informatics.mccme.ru la sectiunea OLIMPIADE PERSONALE/REPUBLICA KOMI. olimpiade. Ora pentru Olimpiada de pe acest site este 22 noiembrie 2017 de la 12.00 la 18.00 (accesul va fi închis la ora 18.15).

În cazul utilizării unei versiuni pe hârtie a Olimpiadei, ora este determinată organ municipal managementul educației.

Următoarele limbaje și medii de programare sunt utilizate pentru etapa municipală a Olimpiadei:

de bază: FreePascal, C, C ++, GNU C/C++4/6/1, Delphi 7.0; adiţional : Borland C++3.1, Visual Basic, Mono 2.0, Python 3.3.

De precizat că pentru toate softurile folosite în etapa municipală, organizatorii acestei etape trebuie să aibă licențele necesare. Cel mai recomandat sisteme software sunt distribuite gratuit și pot fi descărcate de pe site-urile lor respective. Exemple de astfel de site-uri sunt:

FreePascal – site-ul webhttp://freepascal.org;

MinGW – site-ul webhttp://mingw.org;

Eclipse – site-ul http://eclipse.org;

Code::Blocks – site-ul webhttp://www.codeblocks.org;

Far manager – site web http://farmanager.com/index.php?l=ru

Durata turului poate fi de la trei până la patru ore astronomice pentru clasele 7-8 și de la patru până la cinci ore astronomice pentru clasele 9-11.

În timpul turului, participanților olimpici li se interzice utilizarea internetului, orice dispozitive electronice, inclusiv calculatoare personale, calculatoare, electronice caiete, mijloace de comunicare (pagere, telefoane mobile etc.), medii electronice de stocare (dischete, CD-uri și DVD-uri, module de memorie flash etc.), precum și literatură educațională și pregătită note personale.

Accesul la Internet este posibil numai dacă sistemul de internet este utilizat în timpul turului verificare automată deciziile participanților, dar apoi accesul la alte site-uri decât locul olimpiadei trebuie blocat.

Dacă în timpul turului, din nicio vină a participantului, apar defecțiuni la computerul sau echipamentul utilizat software prin decizia juriului, timpul petrecut pentru restabilirea functionalitatii calculatorului poate fi compensat.

Descrierea sistemului de evaluare a soluțiilor problemelor

Evaluarea soluțiilor la probleme va avea loc automat pe un sistem specializat de desfășurare a Olimpiadei.

Tabelul de notare a sarcinilor:

sarcini

Clasa a VII-a - a VIII-a

Clasa 9-11

numărul maxim de puncte

numărul maxim de puncte

Total:

Când verificare manuală Pentru rezolvarea problemelor se folosesc teste din exemplele date în enunțul problemei. Dacă la aceste teste soluția participantului dă răspunsul corect, atunci participantul primește 10 puncte pentru 1 test și 20 de puncte pentru 2 teste.

Să luăm în considerare rezolvarea problemelor din stadiul școlar al Olimpiadei Ruse pentru școlari în informatică în programare. Puteți descărca teme utilizând următoarele link-uri:

Să luăm în considerare următoarele sarcini:

Sarcina nr. 1. Tabla de sah.

Tabla de șah este formată din n × m pătrate, colorate în negru și culoare albaîntr-o ordine de șah. În acest caz, pătratul din colțul din stânga jos al tablei este vopsit în negru
culoare. Stabiliți câte celule negre sunt pe tablă. Programul primește ca intrare două numere n și m, scrise pe linii separate. Toate numerele sunt numere naturale, care nu depășesc 30 000. Programul trebuie să imprime un număr întreg - numărul de celule negre de pe tablă.

Soluţie.

Să luăm în considerare cazurile speciale:

Vedem un model:

  1. dacă numărul de câmpuri este par (4x4=16), atunci fiecare rând are același număr de celule albe și negre, adică pentru a găsi numărul de câmpuri negre trebuie să împărțiți numărul total de celule la 2. Să verificăm: 16:2=8. Hai să facem calculul. Intr-adevar 8!! Puteți experimenta cu plăci de alte dimensiuni, dar să numărul total celulele erau egale.
  2. dacă numărul de câmpuri este impar (5x5=25) atunci situația este diferită. Numărul de celule negre se calculează cu formula: (n+1)/2, unde n este numărul total de pătrate de pe tabla de șah (25+1)/2=13 - corect!!!)

Daca este aplicabil această formulă pentru plăci 3x3 sau 5x3 - răspunsul va fi corect.

Programul Pascal va arăta astfel:

var n, m, rezultat: longint; începe readln(n); readln(m); dacă n*m mod 2 =0 atunci rezultat:=n*m div 2 altfel rezultat:= (n*m+1) div 2; scrieln(rezultat); Sfârşit.

(Operatordiveste folosit datorită faptului că acest șablon, în enunțul problemei, toate variabilele au tipul întreg. Dacădivînlocuiți cu diviziunea obișnuită, apoi cu variabilarezultattrebuie declarat careal).

Sarcina nr. 2. Manhattan.

Cartierele din Manhattan sunt formate din străzi care merg de la sud la nord și străzi de la vest la est. Toate străzile și străzile sunt numerotate începând de la 1
la rând (prima stradă, a doua stradă, a treia stradă etc.). Te poți deplasa doar pe străzi sau pe străzi.

Misha a venit pentru prima dată în Manhattan. Acum se află la intersecția dintre bulevardul x1 și strada numărul y1. Trebuie să ajungă la intersecția dintre bulevardul x2 și strada numărul y2.
Stabilește calea pe care ar trebui să o urmeze. Programul primește 4 numere ca intrare: x1, y1, x2, y2, scrise în rânduri separate. Toate numerele sunt numere naturale și nu depășesc 103. Locațiile inițiale și finale ale lui Misha nu coincid.
Programul ar trebui să scoată secvența din latină litere mari, descriind traseul pe care trebuie să-l urmeze Misha. Litera "N" indică deplasarea cu un bloc spre nord, "S" - sud, "W" - vest, "E" - est. Programul ar trebui să imprime cea mai scurtă dintre toate rutele posibile, dar dacă există mai multe rute cele mai scurte, atunci programul ar trebui să imprime oricare dintre ele (dar doar una).
Programul poate afișa secvența de mișcări nu pe o linie (ca în exemplu), ci fiecare simbol de răspuns pe o linie separată (de exemplu, dacă fiecare simbol
răspunsul este tipărit folosind o comandă separată de ieșire în buclă).

Soluţie.

Să ne imaginăm sistemul de străzi și străzi ca un sistem de coordonate, unde intersecțiile sunt puncte cu coordonatele corespunzătoare (intersecția celui de-al doilea bulevard și prima stradă este un punct cu coordonatele (2;1); intersecția celui de-al patrulea bulevard și o a treia stradă este un punct cu coordonatele (4;3) etc.)

Pentru a ajunge de la intersecția dintre Second Avenue și Fourth Street (punctul A) până la intersecția Sixth Avenue și First Street (punctul B), trebuie să mergeți la dreapta la x2 - x1 = dx (6-2 = 4) si jos mai departe y2 - y1 = dy (4 - 1 = 3). Dacă punctul B s-ar afla în locația punctului A și punctul A s-ar afla în locul punctului B, atunci ar trebui să ne deplasăm la stânga cu dx și în sus cu dy. Acestea. din poziție relativă Direcția de mișcare depinde de aceste puncte (A și B).

Să scriem un program în Pascal:

var x1,y1,x2,y2,dx,dy,i:intger;începe readln(x1,y1,x2,y2); dx:=abs(x1-x2); // x distanta dy:=abs(y1-y2); // distanța pe axa y dacă x2>x1 atunci // dacă punctul B este la dreapta punctului A, atunci... pentru i:=1 to dx do write("E") altfel pentru i:=1 to dx do write("W"); dacă y1>y2 atunci // dacă punctul A este mai mare decât punctul B, atunci... pentru i:=1 to dy do write("S") else for i:=1 to dy do write("N"); Sfârşit.

Sarcinile rămase sunt ceva mai dificile. Va fi o recenzie în curând. Rămâneți pe fază pentru actualizări, abonați-vă!

Luați în considerare un tabel care conținen linii şim coloane, fiecare celulă conţinând un zero sau unul. Să numim un astfel de tabel frumos dacă nu conține un singur pătrat 2 pe 2 umplut în întregime cu zerouri sau în întregime cu unu.

Deci, de exemplu, o masă de 4 pe 4 din stânga este drăguță, dar o masă de 3 pe 3 din dreapta nu este.

Sunt definite mai multe tabele. Este necesar ca fiecare dintre ei să afle dacă este drăguță.

Date de intrare

Prima linie a fișierului de intrare INPUT.TXT conține numărul de seturi de date de intrare t (1 ≤ t ≤ 10). Urmează descrierile acestor seturi. Descrierea fiecărei mulțimi constă dintr-o linie care conține numere n și m (1 ≤ n,m ≤ 100) și n linii, fiecare conținând m numere separate prin spații. Al-lea număr din linia i+1 a descrierii setului de date de intrare este elementul a ij tabelul corespunzător. Este garantat că toate a ij sunt egale fie cu zero, fie cu unu.

Ieșire

Pentru fiecare set de intrări, scoateți în fișierul OUTPUT.TXT o singură linie care conține cuvântul „DA” dacă tabelul corespunzător este frumos, iar cuvântul „NU” în caz contrar.

Exemplu

INPUT.TXT

IEȘIRE.TXT

3
1 1
0
4 4
1 0 1 0
1 1 1 0
0 1 0 1
0 0 0 0
3 3
0 0 1
0 0 1
1 1 1
DA
DA
NU

Sarcina este concepută pentru a scrie un program în orice limbaj de programare.

Introducerea datelor se poate face fie din fișierul de intrare, fie de la tastatură.

Având două numere: N și K. Trebuie să găsiți restul când N este împărțit la K.

Date de intrare

Fișierul de intrare INPUT.TXT conține două numere întregi: N și K (1<= N <= 10 100 , 1 <= K <= 10 9 ).

Ieșire

Ieșiți restul de N împărțit cu K în fișierul de ieșire OUTPUT.TXT.

Exemple

INPUT.TXT

IEȘIRE.TXT

239 16 15
4638746747645731289347483927 6784789 1001783

Sarcina este concepută pentru a scrie un program în orice limbaj de programare.

Introducerea datelor se poate face fie din fișierul de intrare, fie de la tastatură.

Vanya urmărește broasca. Inițial, se află în punctul 0 al dreptei numerice. Fiecare secundaea sare 1 la dreapta până ajunge la un punct K .Apoi începe să sară 1 în fiecare secundăstânga până când revine la punctul 0, apoi din nou la dreapta etc. Trebuie să determinați unde va ajunge broasca T secunde.

formatul de intrare

În fișierul de intrare input.txt două linii conţin două numere K Și T , separate printr-un spațiu. Ambii

numerele sunt naturale și nu depășesc 1.000.000.000.

Format de iesire

Ieșire în fișierul de ieșire output.txt un număr – coordonata broaștei la momentul T.

Exemplu

8 2

Notă

Programul nu trebuie să afișeze mesaje suplimentare și, de asemenea, nu poate conțineinstrucțiuni care întârzie execuția programului (de exemplu, readln la sfârșitul programului)

Chei

la sarcinile primei etape (școlare) a olimpiadei de materii rusești pentru școlari

în informatică și TIC anul universitar 2016/2017

    Clasa ( max – 45 de puncte )

Sarcina 1. „Testul micului” – 20 de puncte

Tipul problemei: Sarcină de programare. Matrice bidimensionale

Sarcina este concepută pentru a scrie un program în orice limbaj de programare.

Introducerea datelor se poate face fie din fișierul de intrare, fie de la tastatură.

În această sarcină, este necesar să citiți secvențial toate matricele prezentate într-o matrice bidimensională și să le verificați atractivitatea și să scoateți rezultatul testului în fișierul de ieșire. Pentru a verifica dacă matricea curentă este atractivă, puteți parcurge toate subbaryurile posibile 2x2 într-o buclă dublă și puteți verifica dacă există cel puțin unul dintre ele constând din elemente identice. Dacă da, atunci „NU” și „DA” ar trebui să apară în fișier, în caz contrar. Mecanismul de verificare a unei matrice pentru drăgălășenie poate fi descris după cum urmează:

Ok=adevarat;

pentru i=1..n-1(

pentru j=1..m-1(

if((a[i][j]+a[i]+a[j]+a) mod 4 == 0) Ok=fals;

if(Ok) write("DA") else write("NU");

Trebuie remarcat faptul că utilizarea unei matrice bidimensionale nu este deloc necesară. Aici nu este necesar să vă amintiți toate elementele matricei; este suficient să vă amintiți linia anterioară și curentă și să verificați subbarrajele 2x2 în timp ce citiți datele. Acest algoritm este puțin mai complicat de implementat, dar este mai economic în ceea ce privește memoria utilizată, ceea ce uneori nu este mai puțin important.

Problema 2. „Diviziunea cu rest” – 10 puncte

Tipul problemei: Sarcină de programare. Aritmetica intregi

Sarcina este concepută pentru a scrie un program în orice limbaj de programare.

Introducerea datelor se poate face fie din fișierul de intrare, fie de la tastatură.

Soluția la această problemă este similară cu soluția problemei " A div B ". Aici trebuie luat în considerare faptul că dividendul este un număr destul de mare și în timpul procesului de calcul, valoarea curentă poate depăși maximul posibil pentru un număr întreg de 4 octeți, deci trebuie să utilizați alte tipuri (de exemplu, int64 sau __int64 în Pascal).

Algoritmul care implementează această sarcină poate fi scris în următoarea formă:

const maxsize=101;

int a, b;

int64x;

readlong(a);

citeste(b);

x=0; k=0;

pentru i=a..1(

x = x*10+a[i];

dacă (x< b and k=0 and i >1) continua;

k=1;

x = x mod b;

scrie (x);

Problema 3. „Broaște” – 15 puncte

Tipul problemei: Sarcină de programare. Operator condiționat

Sarcina este concepută pentru a scrie un program în orice limbaj de programare.

Introducerea datelor se poate face fie din fișierul de intrare, fie de la tastatură.

programul A;

var

k, t: întreg;

ÎNCEPE

assign(input, 'input.txt'); resetare(intrare);

assign(output, 'output.txt'); rescrie (ieșire);

ReadLn(k, t);

dacă (t div k mod 2 = 0) atunci

WriteLn(t mod k)

altfel

WriteLn(k - t mod k);

inchidere(intrare); închide (ieșire);

Sfârşit.

In contact cu