Cod sursa(job #1417369)

Utilizator mihai.constantinConstantin Mihai mihai.constantin Data 10 aprilie 2015 11:21:47
Problema Cifra Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

char s[105]; int T;

ifstream in("cifra.in");
ofstream out("cifra.out");

long long Exp_log(long long x, long long y) //calculam u(x^y)
{
    long long answer=1;

    while(y)
    {
        if(y&1) answer=answer*x%10;
        x=x*x%10;
        y >>= 1;
    }
    return answer;
}

int main()
{
    int i; int n,m,pow,SUMA;

    in >> T; in.get();

    for(i=1; i<=T; i++)
    {
        in.getline(s,105);

        n=s[strlen(s)-1]-'0'; //cout<<strlen(s);
        if(strlen(s)-1==0) {m=n; pow=m;}
        else {m=s[strlen(s)-2]-'0'; pow=m*10+n;}

        //out<<n<<" "<<pow<<'\n';

        //calculam u(n^pow) prin ridicare la putere in timp logaritmic
        //out << Exp_log(n,pow)<<'\n';

        SUMA=0;
        for(int k=1; k<=pow; k++)
        {SUMA+=Exp_log(k,k); SUMA=SUMA%10;}

        out << SUMA<<'\n';

    }

    return 0;
}