Cod sursa(job #971241)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 8 iulie 2013 20:21:13
Problema Sandokan Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
using namespace std;
ifstream F("sandokan.in");
ofstream G("sandokan.out");

#define Mod 2000003
#define max(a , b) ( ( a>b ) ? a : b ) 
#define min(a , b) ( ( a<b ) ? a : b ) 
#define ll long long

ll N,K;

ll Pow(int a,int b)
{
    ll x=1,y=a; 
    while ( b > 0)
	{
        if ( b%2 == 1) x=(x*y)%Mod;
        y = (y*y)%Mod; 
        b /= 2;
    }
    return x%Mod;
}

ll Comb(int N,int K)
{
	ll Rez1=1, Rez2=1,Rez3=1;
	for (int i=1;i<=N;++i)
		Rez1=( Rez1 * i ) % Mod;
	for (int i=1;i<=K;++i)
		Rez2=( Rez2 * i ) % Mod;
	for (int i=1;i<=N-K;++i)
		Rez3=( Rez3 * i ) % Mod;
	Rez2=( Rez2 * Rez3 ) % Mod;
	Rez2=( Pow( Rez2 , Mod-2 ) ) % Mod ;
	return ( Rez1 * Rez2 );
}

int main()
{
	F>>N>>K;
	if (N<=K)
		G<<"1\n";
	else
		G<<Comb(N-1,(N-1) %(K-1 ))<<'\n';
	/*

for(i=0;i<strlen(s);i++)
	if(!strchr(alfabet,s[i])){
		j=i-1;
		while(strchr(alfabet,s[j]) && j>=0){
		fout<<s[j];
		j--;
		}
		fout<<s[i];
	}
*/
	F.close();
	G.close();
	return 0;
}