grad

Time limit: 0.01s Memory limit: 16MB Input: grad.in Output: grad.out

Se consideră o propoziţie formată din litere mici ale alfabetului englez şi eventual spaţii. Cuvintele sunt formate numai din litere şi sunt separate între ele prin unul sau mai multe spaţii.

Definim numărul asociat unui cuvânt c1c2ckc_1 c_2 \dots c_k ca fiind un număr natural ncn_c, obţinut ca produsul puterilor de forma pip_i, unde pp este poziţia în alfabet a literei cic_i. Astfel cuvântului badab i se asociază numărul nc=2112431425n_c = 2^1 \cdot 1^2 \cdot 4^3 \cdot 1^4 \cdot 2^5, adică nc=4 096n_c = 4 \ 096.

Definim gradul unui cuvânt c1c2ckc_1 c_2 \dots c_k ca fiind numărul nrnr modulo kk, unde nrnr este numărul de divizori al lui ncn_c. Gradul cuvântului badab este 33, pentru că nr=13nr = 13 (cei 1313 divizori ai lui 4 0964 \ 096 sunt: 11, 22, 44, 88, 1616, 3232, 6464, 128128, 256256, 512512, 10241024, 20482048 şi 40964096), k=5k = 5 (cuvântul conţine 55 litere) şi 1313 modulo 55 = 33.

Definim gradul unei propoziţii ca fiind suma gradelor cuvintelor existente în ea.

Cerința

Să se scrie un program care pentru o propoziţie dată determină gradul ei.

Date de intrare

Fişierul de intrare grad.in va conţine pe prima linie o propoziţie.

Date de ieșire

Fişierul de ieşire grad.out va conţine pe prima linie gradul propoziţiei.

Restricții și precizări

  • Propoziţia are cel mult 255255 de caractere.
  • Propoziţia începe şi se termină cu literă, şi este urmată de sfârşit de linie.
  • nn modulo kk înseamnă restul împărţirii lui nn la kk.
  • În alfabet litera a este pe poziţia 11, b este pe poziţia 22, şi aşa mai departe.

Exemplu

grad.in

de   badab

grad.out

4

Explicație

Gradul cuvântului de este 11, iar gradul cuvântului badab este 33, deci gradul propoziţiei citite va fi 1+3=41 + 3 = 4.

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