Cod sursa(job #942628)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 23 aprilie 2013 09:19:24
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
include <fstream>
using namespace std;
ifstream f("lgput.in");
ofstream g("lgput.out");
int a,nn;
#define ll long long
int  MOD;

int phi(int n)
{
    int result=1;
    for(int i=2;i*i<=n;++i)
    {
      int produs=1;
      while (n%i==0)
      {
          n/=i;
          produs*=i;
          result*=(produs-(produs/i));
      }
    }
    if (n>1) result*=(n-1);
    return result;
}
 ll lp(int  b)
{
    if (b==1) return a%MOD;
    if (b==0) return 1;
    if (b%2) return (a*lp(b-1))%MOD;
    return (lp(b/2)*lp(b/2))%MOD;
}
int invers (int a,int putere)
{
    MOD=putere;
    return lp(phi(putere)-1);
}
int main()
{
    f>>a>>nn;

    MOD=1999999973;
    g<<lp(nn);


  f.close();
  g.close();
    return 0;
}