Cod sursa(job #782183)

Utilizator alexarnautuArnautu Alexandru alexarnautu Data 26 august 2012 10:17:28
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <cstdio>

using namespace std;

FILE * iFile;
FILE * oFile;

long long n, k;

void read()
{
    fscanf(iFile, "%lld%lld", &k, &n);
}

long long expo(long long a, long long b){
  long long result = 1;

  while (b){
    if (b&1){
      result *= a;
    }
    b >>=1 ;
    a *= a;
  }

  return result;
}


void solve()
{
    long long result;

    result = expo(k, n);

    /*while(n > 0)
    {
        if(n % 2 == 0)
        {
            k = k * k;
            n = n / 2;
        } else {
            result = (result * k) %1999999973;
            n--;
            k = k * k;
            n = n / 2;
        }
    }*/

    fprintf(oFile, "%lld", result % 1999999973);
}


int main()
{
    iFile = fopen("lgput.in", "r");
    oFile = fopen("lgput.out", "w");

    read();
    solve();

    fclose(iFile);
    fclose(oFile);

    return 0;
}