Cod sursa(job #164566)

Utilizator tm_raduToma Radu tm_radu Data 24 martie 2008 15:29:38
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>
#define mod 1999999973

int a, b;

int Putere(int a, int b);

int main()
{
    freopen("lgput.in", "r", stdin);
    freopen("lgput.out", "w", stdout);
    scanf("%d %d", &a, &b);
    printf("%d\n", Putere(a, b));
    
    return 0;
}

int Putere(int a, int b)
{
    if ( b == 1 ) return a%mod;
    if ( b == 0 ) return 1;
    if ( b % 2 == 0 )
    {
        long long int c = 1;
        c = Putere(a, b/2);
        c = (c*c)%mod;
        return c;
    }
    else
    {
        long long int c = 1;
        c = Putere(a, b/2);
        c = (c*c)%mod;
        c = (c*a)%mod;
        return c;
    }        
}