Cod sursa(job #2941732)

Utilizator Daria_M20Marian Daria Daria_M20 Data 18 noiembrie 2022 10:15:52
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.51 kb
#include <iostream>
#include <fstream>
#define M 1999999973
using namespace std;
ifstream in("lgput.in");
ofstream out("lgput.out");
int a[100];
int main()
{
    long long n,p,x;
    in>>n>>p;
    x=n;
    int i=0;
    while(p>1)
    {
       if(p%2==0){
        i++;
        a[i]=2;
        p=p/2;
       }else {i++; a[i]=1; p=p-1;}
    }
    for(int j=i; j>=1; j--)
    {
        if(a[j]==2){
            x=x*x%M;
        }
        if(a[j]==1)x=x*n%M;
    }
    out<<x;
    return 0;
}