Cod sursa(job #1550696)

Utilizator fromzerotoheroFROM ZERO fromzerotohero Data 14 decembrie 2015 15:54:41
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <iostream>
#include <fstream>

#define dataType unsigned long long
#define mod 1999999973

using namespace std;

dataType n, p;

dataType lgput(dataType n, dataType p)
{
    
    if (p == 1)
        return n;
    
    dataType half = lgput(n, p/2) % mod;
    
    if (p % 2 == 0)
        return (half * half) % mod;
    else
        return (((half * half) % mod) * n) % mod;
    
}


int main()
{
    
    ifstream fi("lgput.in");
    ofstream fo("lgput.out");
    
    fi >> n >> p;
    
    fo << lgput(n, p) << "\n";
    
    fi.close();
    fo.close();
    
    return 0;
}