Sinulle on annettu bittijono, ja tehtäväsi on muuttaa jonoa niin, että jokainen bitti on 0.

Samankaltaiset tiedostot
Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin:

S: siirtää listan ensimmäisen luvun viimeiseksi V: vaihtaa keskenään listan kaksi ensimmäistä lukua

Esimerkiksi jos käytössä ovat kirjaimet FFII, mahdolliset nimet ovat FIFI ja IFIF. Näistä aakkosjärjestykssä ensimmäinen nimi on FIFI.

Datatähti 2019 loppu

Syötteen ensimmäisellä rivillä on kokonaisluku n, testien määrä (1 n 10). Tämän jälkeen jokaisella seuraavalla rivillä on kokonaisluku x (0 x 1000).

Toisessa kyselyssä alueella on 1 ruudussa A ja 3 ruudussa B, joten suosituin ehdokas on B.

Syötteen ainoalla rivillä on yksi positiivinen kokonaisluku, joka on alle = Luvussa ei esiinny missään kohtaa numeroa 0.

Merkkijono on palindromi, jos se säilyy samana, vaikka sen kääntää väärinpäin.

Kaulaketju. Syöte. Tuloste. Esimerkki 1. Esimerkki 2

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

Helsingin seitsemäsluokkalaisten matematiikkakilpailu Ratkaisuita

Task list Submit code Submissions Messages Scoreboard View queue Edit contest

Task list Submit code Submissions Scoreboard View queue Edit contest

Uolevin reitti. Kuvaus. Syöte (stdin) Tuloste (stdout) Esimerkki 1. Esimerkki 2

{ 2v + 2h + m = 8 v + 3h + m = 7,5 2v + 3m = 7, mistä laskemmalla yhtälöt puolittain yhteen saadaan 5v + 5h + 5m = 22,5 v +

B. 2 E. en tiedä C ovat luonnollisia lukuja?

Lukuspiraali. Syöte. Tuloste. Esimerkki 1. Esimerkki 2. Esimerkki 3. Tarkastellaan seuraavanlaisia lukuspiraaleita:

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Task list Submit code Submissions Messages Scoreboard View queue Edit contest

Kaikkiin tehtäviin laskuja, kuvia tai muita perusteluja näkyviin.

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =

Helsingin seitsemäsluokkalaisten matematiikkakilpailu Ratkaisuita

4. Oheisessa 4x4 ruudukossa jokainen merkki tarkoittaa jotakin lukua. Mikä lukua salmiakki vastaa?

Puzzle-SM Loppukilpailu Oulu

Ohjelmoinnin perusteet Y Python

Maahan on pudonnut omenoita, ja Uolevi aikoo poimia niitä. Tiedät jokaisesta omenasta, kuinka painava se on.

Puzzle SM Pistelasku

Kenguru 2014 Ecolier (4. ja 5. luokka)

HUOLTOMATEMATIIKKA 2, MATERIAALI

Kenguru 2016 Student lukiosarja

8. Kieliopit ja kielet

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

Kenguru 2018 Ecolier (4. ja 5. luokka)

Kenguru 2012 Student sivu 1 / 8 (lukion 2. ja 3. vuosi)

Ratkaisut Summa on nolla, sillä luvut muodostavat vastalukuparit: ( 10) + 10 = 0, ( 9) + 9 = 0,...

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Kappale 20: Kantaluvut

Tekijä MAA2 Polynomifunktiot ja -yhtälöt = Vastaus a)

Tehtävä Vastaus

joissa on 0 4 oikeata vastausta. Laskimet eivät ole sallittuja.

Ohjelmoinnin peruskurssi Y1

Kenguru 2017 Student lukio

TEHTÄVIEN RATKAISUT. Luku a) Merkintä f (5) tarkoittaa lukua, jonka funktio tuottaa, kun siihen syötetään luku 5.

15 Yhtäsuuruuksia 1. Päättele x:llä merkityn punnuksen massa. a) x 4 kg. x 3 kg

Kenguru 2011 Junior (lukion 1. vuosi)

8. Kieliopit ja kielet 1 / 22

Matematiikan taito 9, RATKAISUT. , jolloin. . Vast. ]0,2] arvot.

1 GDL-OBJEKTIN TUONTI...1

Kenguru 2019 Student lukio

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

Python-ohjelmointi Harjoitus 2

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä?

yleisessä muodossa x y ax by c 0. 6p

Lukion matematiikkakilpailun alkukilpailu 2015

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

3 Yleinen toisen asteen yhtälö ja epäyhtälö

Ajotaitomerkkisäännöt matkailuautolle voimaan

Ohjelmoinnin perusteet Y Python

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

Ohjelmoinnin perusteet Y Python

Kenguru 2012 Junior sivu 1 / 8 (lukion 1. vuosi)

Cadets Sivu 1 RATKAISUT

Ohjelmoinnin peruskurssi Y1

A* Reitinhaku Aloittelijoille

Juuri 3 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

Ohjelmoinnin perusteet Y Python

Muumion kirous. Pelisuunnitteludokumentti. Veikkauksen pelisuunnittelukilpailua (Peliskaba2015) varten

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Kenguru 2017 Benjamin (6. ja 7. luokka)

x 5 15 x 25 10x 40 11x x y 36 y sijoitus jompaankumpaan yhtälöön : b)

Ohjelmoinnin perusteet Y Python

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Aritmeettinen summa Laske. a) b) 23 + ( 24) + ( 25) + ( 26) + ( 27) + ( 28) Ratkaisu.

S BAB ABA A aas bba B bbs c

Tämä luku nojaa vahvasti esimerkkeihin. Aloitetaan palauttamalla mieleen, mitä koordinaatistolla tarkoitetaan.

Kenguru 2017 Cadet (8. ja 9. luokka)

Algoritmit 2. Luento 6 Ke Timo Männikkö

Kenguru 2013 Cadet (8. ja 9. luokka)

Java-kielen perusteet

1 Rationaalifunktio , a) Sijoitetaan nopeus 50 km/h vaihtoaikaa kuvaavan funktion lausekkeeseen.

Ohjelmoinnin perusteet Y Python

Tehtävä: FIL Tiedostopolut

Kenguru 2013 Cadet (8. ja 9. luokka)

3. Kuvio taitetaan kuutioksi. Mikä on suurin samaa kärkeä ympäröivillä kolmella sivutahkolla olevien lukujen tulo?

Uuden Peda.netin käyttöönotto

niin järjestys on tämä: ensin kerto- ja jakolaskut vasemmalta oikealle, sen jälkeen plus- ja miinuslaskut vasemmalta oikealle.

Tehtävä Vastaus

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Neliösukat. Luo 56 (70) silmukkaa ja jaa ne tasan 4 puikolle (14 (17 ja 18 s)/puikko)

Labyrintti. Pelihahmon toiminta. Piirrä pelihahmo (älä piirrä esim. sivusta, ettei hahmon tarvitse

Datatähti alkukilpailu

Kenguru 2015 Benjamin (6. ja 7. luokka)

Derivaatan sovellukset (ääriarvotehtävät ym.)

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Kenguru 2006 sivu 1 Cadet-ratkaisut

Transkriptio:

A Bittien nollaus Sinulle on annettu bittijono, ja tehtäväsi on muuttaa jonoa niin, että jokainen bitti on 0. Saat käyttää seuraavia operaatioita: muuta jokin bitti vastakkaiseksi (0 1 tai 1 0) muuta kaikki bitit bittijonon alkuosassa vastakkaisiksi muuta kaikki bitit bittijonon loppuosassa vastakkaisiksi Kahdessa jälkimmäisessä operaatiossa saat aina valita alkuosan tai loppuosan pituuden. Pituus voi olla välillä 0...n, jossa n on bittijonon pituus. Mikä on pienin tarvittava operaatioiden määrä? Syötteen ensimmäisellä rivillä on kokonaisluku t, testien määrä (1 t 1000). Tämän jälkeen jokaisella rivillä on yksi bittijono, jonka pituus on korkeintaan 100. Ohjelman tulee tulostaa jokaisesta testistä omalle rivilleen pienin operaatioiden määrä bittijonon kaikkien bittien nollaamiseksi. 3 1 1111000 3 1010011 2 11111111101 Ensimmäisessä testissä riittää yksi operaatio: 1111000 0000000 Toisessa testissä yksi ratkaisu on: 1010011 0010011 0000011 0000000 Kolmannessa testissä voi tehdä näin: 11111111101 11111111111 00000000000

B Ruudukko Ruudukko on täytetty sanalla toistamalla sanaa tarvittava määrä kertoja. Täyttäminen alkaa ruudukon vasemmalta ylänurkasta ja etenee rivi kerrallaan. Aina kun ruudukon oikea reuna tulee vastaan, täyttäminen jatkuu seuraavalta riviltä. Esimerkiksi jos ruudukon koko on 4x7 ja sana on APINA, tulos on seuraava: A P I N A A P I N A A P I N A A P I N A A P I N A A P I Tehtäväsi on selvittää tietyssä kohdassa ruudukkoa oleva kirjain. Syötteen ensimmäisellä rivillä on kokonaisluku t, testien määrä (1 t 1000). Jokainen testi muodostuu kolmesta rivistä. Ensimmäisellä rivillä on kokonaisluvut n ja m (1 n, m 10 9 ), ruudukon korkeus ja leveys. Toisella rivillä on merkkijono s, ruudukon täyttävä sana. Sana muodostuu kirjaimista A...Z ja siinä on enintään 100 kirjainta. Kolmannella rivillä on kokonaisluvut y ja x (1 y n, 1 x m), kysytty kohta ruudukossa. Ohjelman tulee tulostaa jokaisesta testistä omalle rivilleen kysytyssä kohdassa ruudukkoa oleva kirjain. 3 P 4 7 I APINA B 2 5 4 7 APINA 4 7 999999 999999 CEMBALO 12345 12345

C Säde Säde lähtee liikkeelle ruudukon vasemmasta ylänurkasta. Sitten se kimpoilee seinistä, kunnes se törmää itseensä ja pysähtyy. Kuinka moneen ruutuun säde osuu kaikkiaan? Säde liikkuu koko ajan viistosuuntaisesti. Aluksi se liikkuu alaoikealle, ja sen jälkeen se kimpoilee seinistä. Jos säde osuu kulmaan, sen suunta muuttuu vastakkaiseksi. Seuraavassa on esimerkkejä säteen etenemisestä 4x9-, 4x10- ja 4x11-ruudukoissa: S#####S## S#####S### S#####S#S## #S###S#S# #S###S#S## #S###S#S#S# ##S#S#S#S ##S#S###S# ##S#S###S#S ###S###S# ###S#####S ###S#####S# Ensimmäisessä tapauksessa säde osuu 11 ruutuun, toisessa tapauksessa 10 ruutuun ja kolmannessa tapauksessa 13 ruutuun. Syötteen ensimmäisellä rivillä on kokonaisluku t, testien määrä (1 t 10 5 ). Jokainen testi muodostuu rivistä, joka sisältää kokonaisluvut n ja m (2 n, m 10 9 ): ruudukon korkeus ja leveys. Ohjelman tulee tulostaa jokaisesta testistä, moneenko ruutuun säde osuu. 3 11 4 9 10 4 10 13 4 11

D Kielletty sana Uolevi on valitsemassa salasanaa, jonka tulee muodostua kirjaimista A...Z. Hän on muuten avoin erilaisille vaihtoehdoille, mutta ei halua missään tapauksessa, että salasanan osana on tietty osajono. Montako vaihtoehtoa Uolevilla on? Syötteen ensimmäisellä rivillä on kokonaisluku t, testien määrä (1 t 10). Tämän jälkeen jokaista testiä kohden on kaksi riviä. Ensimmäisellä rivillä on kokonaisluku n (1 n 100), Uolevin haluama salasanan pituus. Toisella rivillä on merkkijono s, kielletty sana. Kielletty sana muodostuu kirjaimista A...Z ja siinä on enintään n kirjainta. Ohjelman tulee tulostaa jokaisesta testistä mahdollisten salasanojen määrä modulo 10 9 +7. 3 454949 4 15625 QX 826992816 3 A 8 MAIJA Ensimmäisessä testissä sanoja on kaikkiaan 26 4. Näistä vähennetään sellaiset sanat, joissa on alussa, keskellä tai lopussa merkkijono QX. Näiden sanojen määrä on 3 26 2. Tähän lisätään sana QXQX, joka vähennettiin kahdesti. Tuloksena on 26 4-3 26 2 + 1 = 454949 sanaa. Toisessa testissä käytettävissä ovat kaikki kirjaimet paitsi A, joten sanoja on 25 3 = 15625. Viimeisessä testissä mahdollisia salasanoja on 208826994272. Tämän jakojäännös 10 9 +7:llä on 826992816.

E Murtoluvut Sinulle annetaan lista murtolukuja, ja tehtäväsi on etsiä kaksi lukua, jotka ovat mahdollisimman lähellä toisiaan. Syötteen ensimmäisellä rivillä on kokonaisluku t, testien määrä (1 t 100). Tämän jälkeen jokainen testi muodostu seuraavasti. Ensimmäisellä rivillä on kokonaisluku n (2 n 1000), lukujen määrä listassa. Toinen rivi sisältää listan luvut. Jokainen murtoluku on muotoa a/b, jossa 1 a, b 10000. Jokainen murtoluku on suuruudeltaan yli 0 ja alle 1 ja se on annettu supistetussa muodossa. Listassa ei ole kahta murtolukua, joiden suuruus olisi sama. Ohjelman tulee tulostaa jokaisesta testistä pienin ero kahden listan murtoluvun välillä. Ohjelman tulee tulostaa ero murtolukuna supistetussa muodossa. Huom: Murtoluku on supistetussa muodossa, jos osoittajalla ja nimittäjällä ei ole yhteisiä tekijöitä eli murtolukua ei voi sieventää. 3 1/4 2 1/6 1/4 1/2 49/100 3 1/8 1/2 1/3 3 99/100 1/100 1/2

F Labyrintti Haluat piilottaa aarteen mahdollisimman syvälle labyrinttiin. Minkä kohdan valitset? Syötteen ensimmäisellä rivillä on kaksi kokonaislukua n ja m (1 n, m 1000), labyrintin korkeus ja leveys. Tämän jälkeen syöte sisältää n riviä, joista jokaisella on m merkkiä. Merkki # tarkoittaa labyrintin seinää ja merkki. tarkoittaa lattiaa. Labyrintista pääsee ulos reunalla olevasta lattiaruudusta. Labyrintissa voi olla lattiaruutuja, joista ei pääse ulos. Labyrintissa voi olla myös lattiaruutuja, joista ei pääse toisiinsa. Ohjelman tulee laskea, mikä on pisin mahdollinen matka labyrintin lattiaruudusta ulos. Labyrintissa saa liikkua vaaka- ja pystysuuntaisesti lattiaruutuja pitkin. 5 8 4...#.## ###.#.## ###...## Esimerkissä aarre kannattaa sijoittaa seuraavasti:...#.## ###A#.## ###...## Tästä ruudusta lyhin matka ulos labyrintista on 4 askelta. Jokaisesta muusta ruudusta lyhin matka ulos on lyhyempi.