COCI-15 (2015) - Γύρος #3 - 4 (Slon)

View as PDF

Submit solution

Points: 45 (partial)
Time limit: 1.0s
Memory limit: 64M

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

Ένας μαθητής που ονομάζεται Slon είναι πολύ άτακτος στο σχολείο. Πάντα βαριέται στο μάθημα και πάντα κάνει χαμό. Ο δάσκαλος ήθελε να τον ηρεμήσει και να τον "δαμάσει", οπότε του έβαλε ένα δύσκολο μαθηματικό πρόβλημα.

Ο δάσκαλος δίνει στον Slon μια αριθμητική έκφραση A, τον ακέραιο P και M . Ο Slon πρέπει να απαντήσει στην ακόλουθη ερώτηση: "Ποια είναι η ελάχιστη μη αρνητική τιμή της μεταβλητής x στην παράσταση A έτσι ώστε το υπόλοιπο της διαίρεσης του A με το M να είναι ίσο με το P;". Η λύση θα υπάρχει πάντα.

Επιπλέον, θα ισχύει ότι, εάν εφαρμόσουμε τους νόμους της κατανομής στην έκφραση \(Α\), η μεταβλητή x δεν θα πολλαπλασιάζει τη μεταβλητή x (τυπικά, η παράσταση είναι ένα πολυώνυμο πρώτου βαθμού στη μεταβλητή x).

Παραδείγματα έγκυρων παραστάσεων A: 5 + x \times (3 + 2),\;x + 3 \times x + 4 \times (5 + 3 \times (2 + x - 2 \times x)).
Παραδείγματα μη έγκυρων παραστάσεων A: 5 \times (3 + x \times (3 + x)),\;x \times (x + x \times (1 + x)).

Είσοδος

Η πρώτη γραμμή εισόδου περιέχει την έκφραση A\;(1 \leq |A| \leq 100\;000).
Η δεύτερη γραμμή εισόδου περιέχει δύο ακέραιους αριθμούς P\;(0 \leq P \leq M - 1) και M\;(1 \leq M \leq 1\,000\,000).
Η αριθμητική έκφραση A θα αποτελείται μόνο από χαρακτήρες +,\;-,\;\ast,\;(,\;),\;\times και ψηφία από το 0 έως το 9.
Οι αγκύλες θα είναι πάντα ζευγαρωμένες, οι τελεστές +,\;- και \ast θα εφαρμόζονται πάντα σε ακριβώς δύο τιμές (δεν θα υπάρχει έκφραση (-5) ή (4+-5)) και όλοι οι πολλαπλασιασμοί θα είναι σαφείς (δεν θα υπάρχει έκφραση 4(5) ή 2(x)).

Έξοδος

Η πρώτη και μοναδική γραμμή εξόδου πρέπει να περιέχει την ελάχιστη μη αρνητική τιμή της μεταβλητής x.

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

input

5+3+x
9 10

output

1
Επεξήγηση του 1ου παραδείγματος:

Το υπόλοιπο της διαίρεσης 5 + 3 + x με 10 για x = 0 είναι 8, και το υπόλοιπο της διαίρεσης για x = 1 είναι 9, που είναι η λύση.


input

20+3+x
0 5

output

2

input

3*(x+(x+4)*5)
1 7

output

1

Comments

There are no comments at the moment.