Cod sursa(job #2053320)

Utilizator dumitrescugeorgeGeorge Dumitrescu dumitrescugeorge Data 31 octombrie 2017 17:53:29
Problema Calcul Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char b[300];
long long a,c,n=0,p=1;
void citire()
{
    scanf("%lld\n",&a);
    scanf("%s",b);
    scanf("%lld",&c);
    for(long long i=1;i<=c;i++)
        p*=10;
}
void transformare()
{
    long long l=1;
    for(long long i=strlen(b)-1;i>=0;i--)
        {if(b[i]>'9')
           n+=((b[i]-'A')+10)*l;
           else
            n+=(b[i]-'0')*l;
        l*=16;
        }
}
long long exp(long long a,long long b)
{
    if(b==1)
        return a;
        if(b%2==0)
            return exp(a,b/2)*exp(a,b/2);
        else
            return exp(a,b-1)*a;
}
long long facere(long long i)
{
    if(i==1)
        return a;
    if(i%2==0)
    {
        return ((exp(a,i/2)+1)*facere(i/2))%p;
    }
    else
    {
        return a*(1+facere(i-1))%p;
    }
}
void afisare()
{
    long long z=facere(n)%p;
    printf("%lld",z);
}
int main()
{
    freopen("calcul.in","r",stdin);
    freopen("calcul.out","w",stdout);
    citire();
    transformare();
    afisare();
  //  cout << "Hello world!" << endl;
    return 0;
}