Cod sursa(job #146303)

Utilizator recviemAlexandru Pana recviem Data 1 martie 2008 15:29:41
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include "stdio.h"
#define in "lgput.in"
#define out "lgput.out"
#define mod  % 1999999973

    int n,p;

void citire()
{
	freopen(in,"r",stdin);
    scanf("%d %d",&n,&p);
	fclose(stdin);
}

int power(int n, int p)
{
    long result = 1;
    while ( p )
    {
        if ( p & 1 )
        {
            result *= n mod;
            --n;
        }
        n *= n mod;
        p /= 2;
    }
    return result;
}

int main()
{
	citire();
	n = n mod;
	p = p mod;
	freopen(out,"w",stdout);
	printf("%d ",power(n,p));
	fclose(stdout);
	return 0;
}