Enunțul problemei ucif, de clasa a 5-a, dată în 2005 la OJI, se găsește pe .campion.

Rezumat ucif

Pentru un număr natural nenul n mai mic decât 101, să se afșeze ultima cifră a sumei:

$$s = 1^1+2^2+3^3+ \cdots + n^n$$

De exemplu, pentru n = 3, suma este 32, iar ultima cifră a sa este 2.

Soluție ucif

Această problemă este un exercițiu foarte simplu, ce combină structura repetitivă cu ultima cifră a unui număr. Folosind un for, pentru fiecare i de la 1 la n calculăm ultima cifră a lui $i^i$ și o adunăm la sumă. Se știe că ultima cifră a lui x este x % 10. Deci, iată secvența de cod ce calculează ultima cifră a lui $i^i$:

Ca să adăugăm pe u la suma s, vom scrie s = (s + u) % 10;.

Se observă că algoritmul face $1+2+\cdots+n=n(n+1)/2$ pași (mă refer la numărul de intrări în al doilea for). Asta înseamnă foarte puțin pentru restricția din problemă; nu e nevoie de cine știe ce optimizări.

Sursă C++ ucif

Dacă ai vreo nedumerire cu privire la problema ucif, lasă un comentariu și te voi ajuta 🙂

Îți place conținutul acestui site?

Dacă vrei să mă susții în întreținerea server-ului și în a scrie mai multe articole de calitate pe acest blog, mă poți ajuta printr-o mică donație. Află aici cum o poți face!