Clasa a X-a
Problema 3



Se considera un numr natural n (2(n(30) _i un _ir de m (m60) numere naturale mai mici dect n.
Se definesc trei operacii asupra a dou numere naturale a _i b (0a,b<n):
a*b = (a*b) mod n
a^b = (ab+ba) mod n
a+b = (a2+(a+1) 2+...+b2) mod n dac b>a sau (b2+(b+1) 2+...+a2) mod n altfel.
Operaciile * _i ^ au prioritatea 1, adic se evalueaz primele, iar + are prioritatea 2. Evaluarea se face de la stnga la dreapta. 
Numim expresie un _ir de caractere care concine numai operanzi (numere naturale) _i operatori dintre cei definici mai sus. n plus, operanzii trebuie s fie cele m numere date n fi_ierul de intrare, n ordinea n care apar n fi_ier.
S se afle pentru cte dintre numerele 0,1,...,n-1 exist cel pucin o expresie avnd valoarea egal cu numrul respectiv.
Pentru numerele care ndeplinesc condicia de la punctul 1. s se determine cte o expresie avnd valoarea numrului respectiv.

Date de intrare: 
Fi_ierul de intrare ALGEBRA.IN are urmtorul concinut:
  Pe prima linie sunt scrise cele dou numere n _i mdesprcite printr-un spaciu.
  Pe linia urmtoare este scris _irul celor m numere naturale mai mici dect n, desprcite prin cte un spaciu..
Observacie: 
Datele sunt corecte, nu necesit validare.

Date de ie_ire:
Rezultatele se vor scrie n fi_ierul text ALGEBRA.OUT sub urmtoarea form:
pe prima linie se va scrie numrul k obcinut la punctul 1.;
pe urmtoarele k linii vor fi scrise expresiile cerute la punctul 2. sub forma:
val=expresie, unde val este valoarea expresiei (n cazul n care exist mai multe solucii, se va furniza una singur). 

Exemplu:
ALGEBRA.INALGEBRA.OUT          

Timp maxim de executare/test: 1 secund.
Punctaj maxim: 50 puncte
Olimpiada Nacional de Informatic
Oradea 27 martie   4 aprilie




