Cod sursa(job #874909)

Utilizator alexclpAlexandru Clapa alexclp Data 9 februarie 2013 13:59:36
Problema Ridicare la putere in timp logaritmic Scor 0
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 n, int p)
{
    if (p == 1) {
        return n;
    } else if (n % 2 == 1) {
        return put((long long)n * n % M, p/2);
    } else if (n % 2 == 0) {
        return (long long)n * put((long long)n * n % M, (n - 1)/2)%M;
    }
}

int main()
{
    int numar, putere;

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