Cod sursa(job #1623859)

Utilizator Mihaibv13Mihai Stoian Mihaibv13 Data 1 martie 2016 22:20:15
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#include <iostream>
using namespace std;
int a=0,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;




    int 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;
}