Cod sursa(job #2044902)

Utilizator alex2kamebossPuscasu Alexandru alex2kameboss Data 21 octombrie 2017 16:15:18
Problema Calcul Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <cstdio>
#include <climits>

using namespace std;
long long a,b,c,rez;
int rp (long long n,int p, int mod)
{
    int r=1;
    while(p!=0)
    {
        if(p%2==0)
        {
            n=(n*n)%mod;
            p=p/2;

        }
        else
        {
            r=(r*n)%mod;
            p=p-1;
            n=(n*n)%mod;
            p=p/2;
        }
    }
    return r;
}
int main()
{
    freopen("calcul.in","r",stdin);
    freopen("calcul.out","w",stdout);
    scanf("%lld\n%x\n%lld", &a,&b,&c);
    c=rp(10,c,INT_MAX);
    a%=c;
    long long p=a,r=0,cf=a+1,cnst=a*a%c;
    if(b%2==0)
    {
        for(int i=0;i<b/2;i+=2)
        {
            r=(r+cf*p%c)%c;
            p=p*cnst%c;
        }
    }
    else
    {
        for(int i=0;i<b-1;i+=2)
        {
            r=(r+cf*p%c)%c;
            p=p*cnst%c;
        }
        r=(r+p)%c;
    }
    if(c==2)
        printf("%02d", r);
    else if(c==3)
        printf("%03d", r);
    else if(c==4)
        printf("%04d", r);
    else if(c==5)
        printf("%05d", r);
    else if(c==6)
        printf("%06d", r);
    else if(c==7)
        printf("%07d", r);
    else if(c==8)
        printf("%08d", r);
    else if(c==9)
        printf("%09d", r);
    else
        cout<<r;
    return 0;
}