COCI-13 (2013) - Γύρος #3 - 3 (Recenice)

View as PDF

Submit solution

Points: 35 (partial)
Time limit: 1.0s
Memory limit: 32M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Python
Recenice

Μια φορά κι έναν καιρό σε μια χώρα πολύ πολύ μακριά, που κατοικούνταν μόνο από μαθητές μαθηματικών, η Iva και ο Vedran συζητούσαν αυτονόητες προτάσεις. Ένα μέρος αυτών των προτάσεων είναι ακριβώς ένας αριθμός και ισούται με τον συνολικό αριθμό των γραμμάτων της πρότασης. Μερικά παραδείγματα είναι: "Αυτή η πρόταση έχει τριάντα ένα γράμματα.", "Μπλα μπλα δεκαεπτά".

Ο μικρός Jurica άκουσε τη συνομιλία των φίλων του και αποφάσισε να τους εντυπωσιάσει με το πλήθος των αυτονόητων προτάσεων που ξέρει απ'έξω. Γύρισε βιαστικά στο σπίτι και έγραψε ένα πρόγραμμα το οποίο, με μια πρόταση, θα του πει τον ελάχιστο αριθμό που μπορεί να βάλει μέσα, ώστε η πρόταση να είναι έγκυρη. Δυστυχώς, ο υπολογιστής του χάλασε και τώρα χρειάζεται τη βοήθειά σας. Γράψτε ένα πρόγραμμα για να βοηθήσετε τη Jurica!

Η μορφή της πρότασης είναι: λέξη_1 λέξη_2 λέξη_3 ... $ λέξη_{n-1} λέξη_n. Ο χαρακτήρας "$" αντιπροσωπεύει το μέρος όπου πρέπει να μπει ο αριθμός.
Για παράδειγμα, η μορφή της πρότασης "αυτή η πρόταση έχει τριάντα ένα γράμματα" θα ήταν "αυτή η πρόταση έχει $ γράμματα".

Οι κανόνες που ισχύουν για τη γραφή αριθμών είναι οι ακόλουθοι:

  • οι αριθμοί από το 1 έως το 10 γράφονται "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", αντίστοιχα

  • οι αριθμοί από το 11 έως το 19 γράφονται "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"

  • οι υπόλοιποι διψήφιοι αριθμοί γράφονται με τρόπο που ονομάζουμε το ψηφίο των δεκάδων και προσθέτουμε σε αυτό το όνομα του μονοψηφίου που απομένει όταν αφαιρούμε το ψηφίο των δεκάδων. Ειδικά, αν αφαιρώντας το ψηφίο των δεκάδων παραμείνουμε στο μηδέν, δεν προσθέτουμε τίποτα σε αυτό

  • τα ψηφία των δεκάδων (αντίστοιχα από το 2 έως το 9) ονομάζονται τα εξής: "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"

  • Οι τριψήφιοι αριθμοί γράφονται με τρόπο που ονομάζουμε τον αριθμό των εκατοντάδων και προσθέτουμε σε αυτόν τον αριθμό του διψήφιου αριθμού που απομένει. Ειδικά, εάν αφαιρώντας το ψηφίο των εκατοντάδων παραμείνουμε στο μηδέν, δεν προσθέτουμε τίποτα σε αυτό

  • τα ψηφία των εκατοντάδων (αντίστοιχα από το 1 έως το 9) ονομάζονται τα εξής: "onehundred", "twohundred", "threehundred", "fourhundred", "fivehundred", "sixhundred", "sevenhundred", "eighthundred", "ninehundred"

  • οι κανόνες που ισχύουν για αριθμούς με περισσότερα από τρία ψηφία δεν είναι σχετικοί επειδή τα δεδομένα εισόδου θα είναι πάντα τέτοια ώστε η έξοδος να είναι μικρότερη από χίλια

Παραδείγματα ονομασίας ορισμένων αριθμών:

  • 68 = "sixty" + "eight" = "sixtyeight"

  • 319 = "threehundred" + "nineteen" = "threehundrednineteen"

  • 530 = "fivehundred" + "thirty" = "fivehundredthirty"

  • 971 = "ninehundred" + "seventy" + "one" = "ninehundredseventyone"

Είσοδος

Η πρώτη γραμμή εισόδου περιέχει τον ακέραιο αριθμό N\;(1 \leq N \leq 20), τον αριθμό των λέξεων στην πρόταση.

Κάθε μία από τις ακόλουθες N γραμμές περιέχει μια λέξη που δεν υπερβαίνει τα 50 πεζά γράμματα του αγγλικού αλφαβήτου ή τον χαρακτήρα "$" (καμία από τις λέξεις δεν θα είναι το όνομα ενός αριθμού).

Ο χαρακτήρας "$" θα εμφανιστεί ακριβώς μία φορά.

Έξοδος

Η πρώτη και μοναδική γραμμή εξόδου πρέπει να περιέχει την απαιτούμενη πρόταση.
Οι αριθμοί ονομάζονται όπως αναφέρθηκε προηγουμένως, ακόμα κι αν η πρόταση ακούγεται γραμματικά λανθασμένη.
Τα δεδομένα εισόδου θα είναι τέτοια ώστε μια λύση θα υπάρχει πάντα και είναι μικρότερη από 1000.

Βαθμολογία

Σε περιπτώσεις δοκιμής αξίας 40% των συνολικών πόντων, ο απαιτούμενος αριθμός για την πρόταση θα είναι μικρότερος ή ίσος με 50.

Παραδείγματα

input

5
this
sentence
has
$
letters

output

this sentence has thirtyone letters

input

7
$
is
the
number
of
letters
here

output

thirty is the number of letters here
Επεξήγηση του 2ου παραδείγματος:

Ο συνολικός αριθμός των γραμμάτων στην πρόταση είναι 6 + 2 + 3 + 6 + 2 + 7 + 4 = 30


input

5
the
letters
are
$
potato

output

the letters are twentynine potato
Επεξήγηση του 3ου παραδείγματος:

Όπως μπορείτε να δείτε, αυτή η πρόταση είναι γραμματικά λανθασμένη. Ωστόσο, ο Jurica δεν ενδιαφέρεται για αυτό, γιατί είναι μαθηματικός, όχι γλωσσολόγος.


Comments

There are no comments at the moment.