Cod sursa(job #2114793)

Utilizator ksanyi2000Kalman Sandor ksanyi2000 Data 25 ianuarie 2018 21:17:09
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
using namespace std;
unsigned power(unsigned n, unsigned k)
{
    unsigned x=n;
    for(unsigned i=1;i<k;i++)
        n*=x;
    return n;
}
unsigned divide(unsigned n, unsigned x)
{
    if(x)
    {
        if(x%2==0)
            divide(power(n,2),x/2);
        else
        {
            bool felt=1;
            for(unsigned i=3;i<x/2 && felt;i+=2)
            {
                if(x%i==0)
                {
                    felt=0;
                    divide(power(n,i),x/i);
                }
            }
            if(felt)
                return power(n,x);
        }
    }
    else
        return power(n,x);
}
int main()
{
    ifstream f("lgput.in");
    ofstream g("lgput.out");
    unsigned N, P;
    f>>N>>P;
    g<<divide(N,P);
    return 0;
}