import java.io.*;
import java.math.*;
class Main {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 사용자로부터 숫자 두 개를 입력받는다.
String[] strArray = br.readLine().split(" ");
// N, M
int N = Integer.parseInt(strArray[0]);
int M = Integer.parseInt(strArray[1]);
// nPm
BigInteger nPmResult = new BigInteger(strArray[0]);
int minus = Integer.parseInt(strArray[0]);
for (int i = N; i > (N - M + 1); i--) {
minus = minus - 1;
nPmResult = nPmResult.multiply(BigInteger.valueOf(minus));
}
// m!
BigInteger mResult = new BigInteger("1");
for (int i = M; i > 0; i--) {
mResult = mResult.multiply(BigInteger.valueOf(i));
}
// nCm
BigInteger nCmResult = nPmResult.divide(mResult);
int count = 0;
String nCm = nCmResult.toString();
for (int i = nCm.length() - 1; i >= 0; i--) {
if (nCm.charAt(i) == '0') {
count++;
} else {
break;
}
}
System.out.println(count);
}
}
해결방법
1) 계승(팩토리얼, factorial)
2) 수열(퍼뮤테이션, permutation)
3) 조합(콤비네이션, combination)