Cod sursa(job #1976522)

Utilizator Laura_CorneiLaura Maria Cornei Laura_Cornei Data 3 mai 2017 16:46:05
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>
#include <stdint.h>
#define mod 1999999973;
using namespace std;
fstream f1("lgput.in", ios::in);
fstream f2("lgput.out", ios::out);
uint64_t sol=1, var;
int32_t n, p;
int main()
{
   //n^p, descompui pe p= 2^(i1)+ 2^(i2)+...+2^(ik)
   //la sol adaugi prin inmultire n^(2^i), unde 2^i face parte din numarul p
   f1>>n>>p;
   var=n;///n^2^0
   int16_t i;
   for(i=0; (1<<i)<=p; i++)
   {
       if((p& (1<<i)) !=0) {sol*=var;sol%=mod;}
       var=(var*var)%mod;
   }
   f2<<sol;
   return 0;
}