Cod sursa(job #1290449)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 11 decembrie 2014 11:38:59
Problema Schi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>

#define ll unsigned long long

using namespace std;

ifstream f("classictask.in");
ofstream g("classictask.out");

ll a,b,z;
ll rezultat = 1;

inline ll lgput (ll base, ll exp) {

    ll put = 1;
    while (exp) {
        if (exp & 1)
            put = (1LL*put *base)%z;

        exp >>= 1;
        base = (1LL * base * base) %z;
    }

    return put;
}

inline int maxim (int a, int b) { return (a>b)?a:b; };
int main() {

    f>>a>>b>>z;
    int limita = 1000;
    limita = maxim(limita, a/2);
    for (int i=2;i<=1000;i++)
        if (a % i == 0) {
            while (a % i == 0) {
                a /= i;
                rezultat = (rezultat * (lgput(i%z, b)%z))%z;
            }
        }

    rezultat = (rezultat * (lgput(a%z, b)%z))%z;
    g<<rezultat<<'\n';

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