XLIV, 5. aprill 1997. a.

Lõppvooru vanema rühma ülesanded


1. DIOFANTILINE VÕRRAND (30 p.)

Leida võrrandi a1 x1 + a2 x2 + … + an xn = b üks täisarvuline lahend, s.t. võrrandit rahuldavad täisarvud x1, x2, …, xn.

Sisendfaili esimesel real on täisarv n (1 ≤ n ≤ 100). Järgmisel n real on igaühel üks täisarv – vastavalt a1 kuni an. Nendele järgneval real on täisarv b. Arvud ai ja b asuvad lõigul [-1000,1000].

Kirjutada väljundfaili esimesele reale arv x1, teisele reale x2, … , n-ndale reale xn. Kui võrrandil lahend puudub, siis kirjutada väljundfaili rida "Lahend puudub"

Näited:

Fail DIOF1.DAT   Vastus         Fail DIOF2.DAT   Vastus
3                0              2                Lahend puudub
2                1              2     
5                -1             4     
-3                              3     
8

2. TABELARVUTUS (30 p.)

Tabelarvutussüsteemis tähistatakse tabeli ridu numbritega 1,2 ... ja veerge ladina tähtedega A,B .... Neist kombineeruvad tabeli lahtritele aadressid kujul A1, B1, C4, ... Selles ülesandes esitatavas tabelis võivad lahtrites olla reaalarvud ja valemid. Valem algab alati võrdusmärgiga = , võib sisaldada ühte tehtemärki +, -, *, /, arve ja viiteid teistele lahtritele. Tabelarvutussüsteemil on lubatud tehet sooritada ainult siis, kui kõik operandid on leitud.

Sisendiks olevas failis on esimesel real kaks täisarvu M ja N , mis näitavad vastavalt ridade ja veergude arvu (M ≤ 6, N ≤ 6). Järgneval M * N real on toodud lahtrite sisud ridades esinemise järjekorras, igal sisendfaili real üks lahter. Tühi rida tähistab tühja lahtrit.

Kui on võimalik leida kõigi valemeid sisaldavate lahtrite väärtused, siis väljastada need koos lahtrite tähistega. Kui ei, siis anda mingi konkreetse lahtri jaoks teade mittearvutatavuse põhjuse kohta.

Näited:


Fail TAB1.DAT                       Vastus:
1 1                                 A1:Viide tabelist välja
=A2

Fail TAB2.DAT                       Vastus:
1 2                                 B1:Viide tühjale ruudule 

=A1

Fail TAB3.DAT                       Vastus:
2 2                                 B1=8
3                                   A2=24
=A1+B2
=A1*B1
5

3. KAARDIMÄNG (40 p.)

Vaatleme niisugust kaardimängu: mängija segab kaardid ja jagab paki suvalise koha pealt kaheks. Ühe poole pakist paneb ta lauale seljaga allapoole. Edasi on mängija ülesandeks laduda võimalikult palju käes olevatest kaartidest lauale selle paki peale, kusjuures kaarte võib maha panna ainult ükshaaval ja mahapandav kaart peab kas mastilt või nimetuselt olema võrdne paki kõige pealmise kaardiga. Näiteks

ruutu emanda peale võib panna ruutulehe või mõne teise emanda.

Sisendfailis on esimesel real kirjas laual oleva paki pealmine kaart,

teisel real mängija käes olevate kaartide arv (N < 52) ja

järgneval N real nende kaartide nimetused.

Väljundfaili OUTPUT.TXT esimesele reale kirjutada mahapandavate kaartide arv K ja järgmisele K reale kaartide nimetused mahapaneku järjekorras.

Kaartide nimetused on kahetähelised: kõigepealt masti ja seejärel kõrguse tähis:

P = pada, R = risti, A = ärtu, Q = ruutu,

2...9 = 2...9, 0 = 10, S = soldat, E = emand, K = kuningas, A = äss.

Näide (fail KAARDID.DAT)

RS
7
R6
A6
R8
A5
A4
P4
QK

Vastus:

6
R8
R6
A6
A5
A4
P4