Cod sursa(job #2106563)

Utilizator cristicretancristi cretan cristicretan Data 15 ianuarie 2018 22:00:24
Problema Invers modular Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 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 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 mod) /// ridicare la putere in timp logaritmic
{
    long long ans = 1;
    while(p)
    {
        if(p % 2)
        {
            --p;
            ans = (ans * n) % mod;
        }
        p /= 2;
        n = (n * n) % mod;
    }
    return ans;
}

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