Cod sursa(job #874913)

Utilizator alexclpAlexandru Clapa alexclp Data 9 februarie 2013 14:05:34
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include <fstream>

using namespace std;

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

const int M = 1999999973;

long long put(int a, int p)
{
    if (p == 1) {
        return a;
    } else if (p % 2 == 0) {
        return put((long long)a * a % M, p / 2);
    } else if (p % 2 == 1) {
        return (long long)a * put((long long)a * a % M, (p - 1) / 2)%M;
    }
}

int main()
{
    int numar, putere;
    in >> numar >> putere;
    out << put(numar, putere) << "\n";
    return 0;
}