Cod sursa(job #840375)

Utilizator mvcl3Marian Iacob mvcl3 Data 22 decembrie 2012 15:22:21
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include<fstream>
#define M 1999999973
using namespace std;

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

int n, p;
inline int mult(int, int);
int main()
{
    f>>n>>p;
    int val = 1;
    for(int i = p ; i; i >>= 1)
    {
        if(i & 1) val = mult(val, n) % M;
        n *= n;
    }
    g<<val<<'\n';
    g.close();
    return 0;
}
inline int mult(int a, int b)
{
    int val = 0;
    for(int i = b; i; i >>= 1)
    {
        if(i & 1) val += a;
        a += a;
    }
    return val;
}