Cod sursa(job #1447100)

Utilizator mlupseLupse-Turpan Mircea mlupse Data 3 iunie 2015 17:25:09
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#define MOD 1999999973
using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

int main()
{
    int a,p,Sol = 1;

    /*for(int i = 31; i>=0; i--)
        if ( (a & (1<<i)) != 0)
            cout << "1";
        else
            cout << "0";


    //for(int i = 0; i <= 10; i++)
        //cout<< (1<<i) <<"\n";

    //cout<< (15 & 9);


   for(int i = 0; i<= 31; i++)
        {
           if(p & (1<<i))
                Sol = Sol*a;
            a = a*a;
        }*/

    fin>>a>>p;

    while(p)
    {
        if(p%2 == 1)
            Sol = (1LL * Sol * a) % MOD;
        a = (1LL * a * a) % MOD;
        p = p / 2;
    }

    fout<<Sol<<"\n";

    return 0;
}