JXNVCE ALGO-LOG YouJin Jung

BOJ-11051

#include <iostream>
#include <typeinfo>

using namespace std;

#define NUM 10007

long long gcd(long long a, long long b) {
    long long c;
    while (b!=0) {
        c = a%b;
        a = b;
        b = c;
    }
    return a;
}

int comb(int n, int k) {
    long long numerator = 1;
    long long denominator = 1;
    int ans = 1;
    for (int i=k; i>=1; i--) {
        numerator=numerator%NUM*n;
        n--;
        denominator=denominator%NUM*i;
        cout << denominator << endl;
        long long div = gcd(numerator, denominator);
        numerator/=div; 
        denominator/=div;
        
    } 
    cout << numerator << endl;
    cout << denominator << endl;
    return numerator/denominator % NUM;
    // return int(numerator/denominator%10007);
}

int main() {
    ios::sync_with_stdio(false);
    cout.tie(NULL); cin.tie(NULL);

    int N, ans, K;
    cin >> N >> K;

    if (N<1 || N>1000 || K<0 || K>N) return 0;
    
    if (N==K) ans = 1;
    else if (K==0) ans = comb(N,N);
    else {
        if (K>N/2) K=N-K;
        ans = comb(N,K);
    }
    cout << ans << endl;
}