Informatică, întrebare adresată de stefanne00, 9 ani în urmă

calculati ultima cifra a sumei :
s=1+ 1^{1} + 2^{2} +....+ n^{n}


AntiEaglesDavids: Timp execuţie pe test 0.05 sec
AntiEaglesDavids: la cel mai mare test mi-a iesi 28 ms = 0.028 sec :P
artur99: cel mai mare fiind cat? :D
AntiEaglesDavids: i know u can do it bro
AntiEaglesDavids: pt 20000 de N-uri si N > 10 ^ 50
artur99: fara extra h-uri? :))
AntiEaglesDavids: lol, normal ca fara alte h-uri :)) Doar standardu ai voie
artur99: pfff :)))
artur99: sorry vere: http://prntscr.com/8n8x5x :D no more possible
AntiEaglesDavids: :))))))))

Răspunsuri la întrebare

Răspuns de AntiEaglesDavids
0
Pentru n relativ mic (<16)

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int n;
    int64_t sol = 0;

    cin >> n;

    for(int i=1; i<=n; i++) {
        sol += (int64_t)pow(i, i) % 10;
        sol %= 10;
    }

    cout << sol;
    return 0;
}



stefanne00: dar nu mergea sa zic s =.... si dupa
stefanne00: s%10
AntiEaglesDavids: adica?
stefanne00: adica sa-l pun sa calculeze singur s si dupa sa aflu cu % 10 ultima cifra
AntiEaglesDavids: da dar iti va iesi in modul asta pentru un n mai mic pentru ca c++ nu poate sa stocheze toata suma aia intr-o variabila. De aia am facut la fiecare pas sa ia ultima cifra, ca sa poata memora mai mult.
stefanne00: dar eu fac pseudo cod
stefanne00: pseudocod*
AntiEaglesDavids: si abia acum imi zici :))
Alte întrebări interesante