Cod sursa(job #2474394)

Utilizator Iulia_DianaIulia Diana Iulia_Diana Data 15 octombrie 2019 09:51:06
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
int cmmdc(int a, int b)
{
    int r=a%b;
    while(r)
    {
        a=b;
        b=r;
        r=a%b;
    }
    return b;
}
int main()
{
    int n, i, a, fi, rez;
    fin >> a >> n;
    a=sqrt(n);
    fi=n-1;
    for(i=2; i<n-1; i++)
        if(cmmdc(i, n)>1)  fi--;
    while(fi)
    {
        if(fi%2==0)
        {
            a=(a*a)%n;
            fi=fi/2;
        }
        else
        {
            rez=(rez*a)%n;
            fi--;
            a=(a*a)%n;
            fi=fi/2;
        }
    }
    a=(a*rez)%n;
    fout << a;
    return 0;
}