Cod sursa(job #3301212)

Utilizator EgreogHorvath George Egreog Data 23 iunie 2025 11:38:02
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <algorithm>
#include <fstream>
#include <iomanip>
using namespace std;
#define MOD 1999999973

ifstream fin("lgput.in");
ofstream fout("lgput.out");

int f(long long nr, long long p) {
  if (p == 0)
    return 1;
  if (p == 1)
    return nr;

  if (p % 2 != 0)
    return (nr * f(nr, p - 1)) % MOD;

  long long x = f(nr, p / 2);
  return (x * x) % MOD;
}

int main() {
  long long n, p;
  fin >> n >> p;
  fout << f(n, p);
  return 0;
}

// // https: // infoarena.ro/problema/lgput

// #include <cstdio>
// #define DN 1999999973
// using namespace std;

// int f(int nr,int p)
// {
//   if(p==1) return nr;
//   else if(p==0) return 1;
//   else
//   {
//     if(p%2!=0) 
//     {
//       return (nr*f(nr,p-1))%DN;
//     }

//     int x=f(nr,p/2);
//     return (x*1LL*x)%DN;
//   }
// }


// int main()
// {
//   int nr,put;
//   freopen("lgput.in","r", stdin);
//   freopen("lgput.out","w", stdout);
//   scanf("%d %d",&nr,&put);
//   printf("%d",f(nr,put));
//   return 0;
// }