Cod sursa(job #1520462)

Utilizator MadalinaDragomirFMI Dragomir Madalina MadalinaDragomir Data 8 noiembrie 2015 20:03:44
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <iostream>
#include<fstream>
#include<math.h>
using namespace std;
int m=1999999973;
unsigned int i,N,P;
long r;
int putere(int a, int b)
{
    int r=1;
    while(b)
    {
        if(b%2==1)
            r=r*a;
            b>>=1;
            a=a*a;
    }
    return r;
}
int main()
{
    ifstream f("lgput.in");
    ofstream g("lgput.out");
    f>>N>>P;
    if(P%2==0){r=putere(N,P/2);
               g<<((r%m)*(r%m))%m;}
    else {r=putere(N,(P-1)/2);
          g<<((r%m)*(r%m)*N%m)%m;}

    return 0;


}