Cod sursa(job #2246719)

Utilizator stefan1anubystefan popa stefan1anuby Data 27 septembrie 2018 14:08:44
Problema Invers modular Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
int putere(int x, int n)
{
    int p=1;
    while(n>0)
    {
        if(n%2==1)
        {
            p*=x;
            n--;
        }
        x*=x;
        n/=2;

    }
    return p;
}
int euler(int nr)
{
    int sol=1,pt=0;
    for(int i=2; i<=nr; i++)
    {
        if(nr%i==0)
        {
            pt=0;
            while(nr%i==0)
            {
                pt++;
                nr/=i;
            }
            sol*=putere(i,pt-1);
            sol*=(i-1);
            //cout<<i<<" "<<pt<<endl;
        }
    }
    return sol;
}
int main()
{
    int a,n,put;
    in>>a>>n;
    put=euler(n);
    //cout<<a<<" "<<put-1<<endl;
    out<<putere(a,put-1)%7;
    return 0;
}