PROGRAMMEERIMISOLÜMPIAADI KOOLIVOOR 06.12.1997 NOOREM RÜHM (kuni 10. klass) 1. KORRUTUSTABEL 30 punkti 5 sekundit Kirjutada programm, mis väljastab B-süsteemi korrutustabeli. B-süsteemi numbrite väärtused on täisarvud 0...(B-1) ja iga järgu väärtus on B korda suurem eelmise järgu väärtusest. Kui B on suurem 10st, siis kasutatakse 9st suuremate numbrite tähistamiseks tavaliselt suuri ladina tähti. Näiteks 16-süsteemi numbrid on 0...9 ja A(=10)...F(=15) ning 16-arvu A2F väärtus 10-süsteemis on 10*16^2 + 2*16^1 + 15*16^0 = 10*256 + 2*16 + 15*1 = 2607. Sisend: Tekstifaili INPUT.TXT esimesel real on B (2 <= B <= 36) 10-süsteemi arvuna. Väljund: Tekstifaili OUTPUT.TXT esimesele B reale väljastada B-süsteemi korrutustabel, B arvu igal real nii et I. rea J. veerus oleks arvu I*J esitus B-süsteemis. Arvud tuleb üksteisest eraldada tühikutega. Näide: INPUT.TXT OUTPUT.TXT 3 1 2 10 2 11 20 10 20 100 2. LAHUSTE SEGAMINE 30 punkti 5 sekundit Laual on kaks katseklaasi, ühes neist puhas soolhape, teises puhas vesi. Keemik võtab esimesest katseklaasist pipetitäie hapet teise klaasi ja segab selle hoolikalt läbi. Seejärel tõstab ta teisest klaasist pipetitäie saadud lahust esimesse klaasi tagasi ja segab ka selle hoolikalt läbi. Seda tegevust kordab ta N korda. Kirjutada programm, mis leiab happe kontsentratsiooni kummaski katseklaasis. Sisend: Tekstifaili INPUT.TXT esimesel real on kolm tühikutega eraldatud reaalarvu: happe kogus esimeses klaasis (H, 0 < H <= 1000), vee kogus teises klaasis (V, 0 < V <= 1000) ja pipeti suurus (P, 0 < P <= 100). Kõik kolm suurust on antud milliliitrites. Faili teisel real on segamiste arv (N, 1 <= N <= 1000000). Väljund: Tekstifaili OUTPUT.TXT esimesele reale väljastada tühikutega eraldatult happe osakaal mahuprotsentides vastavalt esimeses ja teises katseklaasis. Vastused väljastada täpsusega vähemalt 2 kohta pärast koma. Näide: INPUT.TXT OUTPUT.TXT 9.0 9.0 1.0 90.00 10.00 1 3. ÜHEND JA ÜHISOSA 40 punkti 5 sekundit Kirjutada programm, mis leiab kahe ringi keskpunktide koordinaatide ja raadiuste põhjal 4 punkti: ühe, mis on nende mõlema sees; ühe, mis on esimese sees, kuid mitte teise sees; ühe, mis on teise sees, kuid mitte esimese sees; ühe, mis pole kummagi sees. Ringjoonel asuv punkt loetakse ringi sees olevaks. Sisend: Tekstifaili INPUT.TXT esimesel real on kolm tühikutega eraldatud reaalarvu: esimese ringi keskpunkti koordinaadid ja raadius (X1, Y1, R1, |X1| < 1000, |Y1| < 1000, 0 < R1 < 1000). Teisel real on samad andmed teise ringi kohta. Väljund: Tekstifaili OUTPUT.TXT esimesele reale väljastada sellise punkti koordinaadid, mis asub mõlema ringi sees (või EI OLE, kui sellist punkti ei leidu); teisele reale sellise punkti koordinaadid, mis asub esimese ringi sees, kuid mitte teise ringi sees (või EI OLE); kolmandale reale sellise punkti koordinaadid, mis asub teise ringi sees, kuid mitte esimese ringi sees (või EI OLE); neljandale reale sellise punkti koordinaadid, mis ei asu kummagi ringi sees. Näide: INPUT.TXT OUTPUT.TXT 0.0 0.0 4.0 0.0 1.0 0.0 0.0 2.0 0.0 3.0 EI OLE 0.0 5.0 VANEM RÜHM (11.-12. klass) 1. KORRUTUSTABEL 30 punkti 5 sekundit Kirjutada programm, mis väljastab B-süsteemi korrutustabeli. B-süsteemi numbrite väärtused on täisarvud 0...(B-1) ja iga järgu väärtus on B korda suurem eelmise järgu väärtusest. Kui B on suurem 10st, siis kasutatakse 9st suuremate numbrite tähistamiseks tavaliselt suuri ladina tähti. Näiteks 16-süsteemi numbrid on 0...9 ja A(=10)...F(=15) ning 16-arvu A2F väärtus 10-süsteemis on 10*16^2 + 2*16^1 + 15*16^0 = 10*256 + 2*16 + 15*1 = 2607. Sisend: Tekstifaili INPUT.TXT esimesel real on B (2 <= B <= 36) 10-süsteemi arvuna. Väljund: Tekstifaili OUTPUT.TXT esimesele B reale väljastada B-süsteemi korrutustabel, B arvu igal real nii et I. rea J. veerus oleks arvu I*J esitus B-süsteemis. Arvud tuleb väljastada nii, et igas veerus oleks ühelised üksteise all. Kõik veerud peavad olema ühelaiused ja kõige pikema arvu ees peab olema täpselt üks tühik. Näide: INPUT.TXT OUTPUT.TXT 3 1 2 10 2 11 20 10 20 100 2. LAHUSTE SEGAMINE 30 punkti 5 sekundit Laual on N katseklaasi soolhappe lahusega. Keemik teeb M katset, mille käigus ta valab ühest katseklaasist teise nii palju lahust kui võimalik (kuni esimene klaas saab tühjaks või teine täis). Kirjutada programm, mis leiab happe kontsentratsiooni igas klaasis pärast katseseeria lõppu. Sisend: Tekstifaili INPUT.TXT esimesel real on katseklaaside arv (N, 1 <= N <= 1000) ja järgneval N real igaühel kolm tühikutega eraldatud reaalarvu: katseklaasi maht (Ki, 0 < Ki <= 1000), vee kogus (Vi, 0 < Vi <= 1000) ja happe kogus (Hi, 0 < Hi <= 100). Kõik kolm suurust on antud milliliitrites. Järgmisel real on valamiste arv (M, 1 <= M <= 1000) ja sellele järgneval M real igaühel kaks tühikuga eraldatud täisarvu: klaasi number, kust valatakse ja klaasi number, kuhu valatakse. Väljund: Tekstifaili OUTPUT.TXT N esimesele reale väljastada happe osakaalud mahuprotsentides katseklaasides pärast valamiste seeria lõppu. Vastused väljastada katseklaaside sisendis esitamise järjekorras täpsusega vähemalt 2 kohta pärast koma. Tühja klaasi kohale väljastada -1. Näide: INPUT.TXT OUTPUT.TXT 2 0.00 10.0 8.0 0.0 90.00 10.0 0.0 9.0 1 1 2 3. ÜHEND JA ÜHISOSA 40 punkti 5 sekundit Kirjutada programm, mis leiab ringi keskpunkti koordinaatide ja raadius ning ruudu kahe vastasnurga koordinaatide põhjal 4 punkti: ühe, mis on nende mõlema sees; ühe, mis on ringi sees, kuid mitte ruudu sees; ühe, mis on ruudu sees, kuid mitte ringi sees; ühe, mis pole kummagi sees. Ringjoonel või ruudu küljel asuv punkt loetakse kujundi sees olevaks. Sisend: Tekstifaili INPUT.TXT esimesel real on kolm tühikutega eraldatud reaalarvu: ringi keskpunkti koordinaadid ja raadius (X, Y, R, |X| < 1000, |Y| < 1000, 0 < R < 1000). Teisel real on tühikutega eraldatult ruudu kahe vastastipu koordinaadid (X1, Y1, X2, Y2, |X1| < 1000, |Y1| < 1000, |X2| < 1000, |Y2| < 1000). Väljund: Tekstifaili OUTPUT.TXT esimesele reale väljastada sellise punkti koordinaadid, mis asub mõlema sees (või EI OLE, kui sellist punkti ei leidu); teisele sellise punkti koordinaadid, mis asub ringi, kuid mitte ruudu sees (või EI OLE); kolmandale sellise punkti koordinaadid, mis asub ruudu, kuid mitte ringi sees (või EI OLE); neljandale sellise punkti koordinaadid, mis ei asu kummagi sees. Näide: INPUT.TXT OUTPUT.TXT 0.0 0.0 4.0 1.0 1.0 0.0 0.0 2.0 2.0 0.0 3.0 EI OLE 0.0 5.0