• Time limit: N/A
  • Memory limit: N/A

Kuten kierroksen ensimmäisessä tehtävässä, tehtäväsi on laatia Forth-kielinen ohjelma, joka tuottaa halutun luvun. Nyt kuitenkin arvostelussa vaikuttaa myös, montako komentoa ohjelmassa on.

Syöte

Ensimmäisellä rivillä on kokonaisluku t: testien määrä.

Jokaisella seuraavalla rivillä on kokonaisluku x: ohjelman haluttu lopputulos.

Tuloste

Tulosta jokaisen testin vastauksena kaksi riviä: ensin ohjelman komentojen määrä ja sitten ohjelman komennot yhdellä rivillä.

Esimerkki

Syöte:

3
2
3
5

Tuloste:

2
DUP +
4
DUP DUP + +
7
DUP DUP + SWAP OVER + +

Arvostelu

Tässä tehtävässä sinun ei tule palauttaa koodia vaan tekstitiedosto, joka sisältää tehtävän vastauksen. Tehtävän syöte on saatavilla tiedostossa d.in. Syötteessä t=100 ja jokainen luku x on valittu satunnaisesti väliltä 1 \dots 10^6. Saat muodostaa vastaustiedoston haluamallasi tavalla omalla koneellasi.

Jokaisesta testistä saat \min(100a/k,100) pistettä, missä k on ohjelmasi komentojen määrä ja a on pienin tuomariston tiedossa oleva komentojen määrä. Tehtävän kokonaispistemäärä on testien pistemäärien keskiarvo pyöristettynä alaspäin kokonaisluvuksi.

Sinun tulee antaa jokaiseen testiin kelvollinen ohjelma, jotta vastaus hyväksytään. Lisäksi jokaisessa testissä komentojen määrän tulee olla enintään 1000.

Esimerkissä vastaukset kahteen ensimmäiseen testiin ovat lyhimmät mahdolliset, joten niistä pistemäärä on 100. Kolmannessa testissä vastauksessa on 7 komentoa, mutta pienin mahdollinen komentojen määrä on 6 komentoa, minkä takia pistemäärä on 100 \cdot 6/7 = 85.71. Tässä tapauksessa kokonaispistemääräksi tulee (100+100+85.71)/3=95.24, joka on alaspäin pyöristettynä 95.