Cod sursa(job #2166603)

Utilizator AntoniuFicAntoniu Ficard AntoniuFic Data 13 martie 2018 17:56:19
Problema Invers modular Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <string.h>
using namespace std;

int phi(int x)
{
    int nr=0;
    bool fr[x+5];
    memset(fr, 1, sizeof(fr));
    for(int i=2; i<x; i++)
        if(fr[i]==1)
        {
            nr++;
            for(int j=2*i; j<x+5; j+=i)
                fr[j]=0;
        }
    return nr;
}

int putere(int n, int put, int mod)
{
    int nr=0, init=n;
    while(put>1)
    {
        if(put%2!=0)
            nr++;
        put/=2;
        n=(n*n)%mod;
    }
    for(int i=0; i<nr; i++)
       n=(n*init)%mod;
    return n;
}

int main()
{
    int n, a;
    ifstream f("inversmodular.in");
    ofstream g("inversmodular.out");
    f>>a>>n;
    g<<putere(a, phi(n)-1, n);
    return 0;
}