tombola

Time limit: 0.3s Memory limit: 8MB Input: tombola.in Output: tombola.out

Aflat într-o vizită cu părinții, Iliuță primește un bilet la tombolă pe care este scris un număr natural SS. Pentru a câştiga un premiu, Iliuţă trebuie să afle, plecând de la numărul SS, un număr câştigător XX. Pentru a-l ajuta să ghicească numărul câştigător, mama îi spune lui Iliuță că numărul SS de pe biletul său este suma dintre numărul câştigător XX şi toate numerele obținute plecând de la numărul câștigător XX, prin ștergerea cifrei unităților numărului XX, apoi, succesiv, prin ştergerea cifrei unităţilor numărului obținut la pasul anterior, până se ajunge la un număr de o singură cifră.

De exemplu, dacă numărul XX este 20192019, atunci din XX se pot obține după regula de mai sus trei numere 201201, 2020 și 22. Suma tuturor acestor numere este SS = 20192019 + 201201 + 2020 + 22 = 22422242. Deci, dacă pe biletul lui Iliuță se află numărul S=2242S = 2242, atunci numărul câştigător corespunzător lui SS este XX = 20192019

Din păcate, nu toate numerele naturale permit determinarea unui număr câştigător. De exemplu, pentru numărul 2121 nu există niciun număr natural XX din care să putem obţine 2121 după regula descrisă de mama lui Iliuţă.

Cu ajutorul unui program a fost generat automat un şir de NN numere, numerotate în ordinea generării S1S_1, S2S_2, \dots, SNS_N. Programul respectiv primeşte patru numere naturale AA, BB, CC, DD și primul număr din șir S1S_1 . Al ii-lea număr generat se obține după regula SiS_i = ((Si1%AS_{i-1} \% A)  B+C\cdot \ B + C) %D\% D, unde 1<iN1 < i \leq N iar aa % bb reprezintă restul împărțirii lui aa la bb (b0b \neq 0)

Cerință

Cunoscându-se numerele naturale NN, S1S_1, AA, BB, CC, DD, scrieți un program care rezolvă următoarele cerințe:

  1. pentru fiecare dintre termenii șirului S1S_1, S2S_2, \dots, SNS_N, determină cel mai mare număr natural mai mic strict decât termenul respectiv, pentru care există un număr câștigător; programul va afișa restul împărțirii sumei numerelor obținute la 101810^{18} + 3131;
  2. pentru fiecare dintre termenii șirului S1S_1, S2S_2, \dots, SNS_N, determină câte numere naturale mai mici sau egale cu termenul respectiv NU au număr câștigător programul va afișa restul împărțirii sumei rezultatelor obținute la 101810^{18} + 3131.

Date de intrare

Fișierul de intrare tombola.in conţine pe prima linie numărul natural pp, reprezentând cerinţa care trebuie rezolvată (11 sau 22). Pe a doua linie se află, în această ordine, numerele naturale NN, S1S_1, AA, BB, CC, DD, separate prin câte un spaţiu.

Date de ieșire

Fişierul de ieşire tombola.out va conţine un singur număr natural care reprezintă rezultatul la cerinţa pp.

Restricții și precizări

  • 1N500 0001 \leq N \leq 500 \ 000
  • 1<S1,C,D10171 < S_1, C, D \leq 10^{17}
  • 1<A,B1091 < A, B \leq 10^9
  • Se garantează că SiS_i > 11, oricare 1iN1 \leq i \leq N
  • Pentru teste valorând 5050 de puncte cerința este 11
  • Pentru 3030% din numărul total de teste, ND106N \cdot D \leq 10^6 și NS1106N \cdot S_1 \leq 10^6 (5050% dintre acestea fiind pentru cerinţa 11)
  • Pentru 6060% din numărul total de teste, N30 000N \leq 30 \ 000 (5050% dintre acestea fiind pentru cerinţa 11).

Exemplul 1

tombola.in

1
1 22 3 3 3 3

tombola.out

20

Explicație

Se rezolvă cerința 11. Avem un singur termen în șir S1=22S_1 = 22. Numărul 2020 este cel mai mare număr strict mai mic decât 2222 care acceptă un număr câștigător (XX = 1919 deoarece 2020 = 1919 + 11).

Exemplul 2

tombola.in

2
1 22 3 3 3 3

tombola.out

2

Explicație

Se rezolvă cerința 22. Avem un singur termen în șir S1=22S_1 = 22. Există două numere mai mici sau egale cu 2222 care NU acceptă număr câștigător, 1010 și respectiv 2121.

Exemplul 3

tombola.in

1
3 12345678901234567 999999999 123456789 98765432109876543 1020304050607080

tombola.out

12805467424792840

Exemplul 4

tombola.in

2
3 98765432109876543 999999999 123456789 12345678901234567 1020304050607080

tombola.out

9912065223185559

Log in or sign up to be able to send submissions!