Cod sursa(job #2106537)

Utilizator cristicretancristi cretan cristicretan Data 15 ianuarie 2018 21:34:56
Problema Invers modular Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
/// invers modular
/// inversul modular al lui a este a^(b - 2)%b unde n e prim
/// se foloseste la calculul combinarilor
#include <iostream>
#include <fstream>
#include <utility>
#include <algorithm>
#define mod 666013
#define m 1999999973
///#define f cin
///#define g cout
using namespace std;

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

long long a, b;

long long ridicareput(long long n, long long p)
{
    long long a = n, ans = 1;
    for(int i = 0; (1<<i) <= p; ++i)
    {
        if(((1<<i) & p) > 0) ans = (ans * a) % m;
        a = (a * a) % m;
    }
    return ans;
}

int main()
{
    f >> a >> b;
    g << ridicareput(a, b - 2) % b; /// il ridic pe a la b - 2 si fac asta mod b
    return 0;
}