Cod sursa(job #1623893)

Utilizator Mihaibv13Mihai Stoian Mihaibv13 Data 1 martie 2016 22:33:52
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <cstdio>
#include <iostream>
using namespace std;
long long a=0;
int n,v[100],vv[100];
int main()
{
    FILE *f=fopen("lgput.in","r");
    fscanf(f,"%d%d",&a,&n);
    FILE *g=fopen("lgput.out","w");

    int k=1;
   while(n)
   {
       v[k++]=n%2;
       n=n/2;
   }
int o=0;
    for(int i=1;i<k;i++)
    { if(v[i]==1)
        vv[++o]=(v[i]<<i-1);
    }

int nrnou=0;




    long long anou=1;
    int p=1;
    k=0;
int    ok=99;
while (ok>2)
 {

     if(p==vv[k+1]) {anou=(anou*a)%1999999973; k++;}
     if(vv[k+1]==0) ok=1;

     a=(a*a)%1999999973; p=p*2;





 }


    fprintf(g,"%d",anou);
    return 0;
}