Cod sursa(job #1609508)

Utilizator Bot32King Max Bot32 Data 22 februarie 2016 20:46:21
Problema Invers modular Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>
using namespace std;

#define mod 30103

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

long long n;
long long rez;

long long exp_log ( long long n , long long p )
{
    if ( p == 1 )
        return n;
    else
    {
        if ( p % 2 ) return (n%mod * ( exp_log((n%mod*n%mod)%mod , p/2) ) % mod ) %mod ;
        else return exp_log(( n%mod*n%mod) %mod , p/2) %mod ;
    }
}


int main()
{
    f >> n;
long long   a = 1;
 long long   b = 1;
    for ( int i = 1 ; i <= 2*n ; i++ )
        a *= i%mod , a %= mod ;
    for ( int i = 1; i <= n ; i++ )
        b *= i%mod , b %= mod ;

long long        alfa = ( n+1 )%mod;
        if (( n+1) % mod == 0 ) alfa = mod;
    long long rez = ( a%mod * exp_log(b,mod-2)%mod * exp_log(b,mod-2)%mod / alfa )% mod;
    g << rez;
    return 0;
}