백준 11050 - 이항 계수 1 [Rust]

[Bronze I] 이항 계수 1 - 11050

Posted by Hebi on October 26, 2023

백준 알고리즘

[Bronze I] 이항 계수 1 - 11050

문제 링크

성능 요약

메모리: 13152 KB, 시간: 0 ms

분류

수학, 구현, 조합론

문제 설명

자연수 N과 정수 K가 주어졌을 때 이항 계수 (NK)를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 NK가 주어진다. (1 ≤ N ≤ 10, 0 ≤ KN)

출력

(NK)를 출력한다.

음악 들으면서 같이 공부해요

Video Label

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use std::io::{BufReader,BufRead,BufWriter,Write,stdin,stdout};
fn main(){
    let mut reader= BufReader::new(stdin().lock());
    let mut writer=BufWriter::new(stdout().lock());
    let mut input = String::new();
    reader.read_line(&mut input).unwrap();
    let v: Vec<i32>= input.trim().split_whitespace().map(|x|x.parse().unwrap()).collect();
    let  n= v[0];
    let  k= v[1];

     writeln!(writer,"{}",factorial(n)/(factorial(k)*factorial(n-k))).unwrap();
     writer.flush().unwrap();
    
}

//n! / (k!(n-k)!
fn factorial(n:i32)->i32{
    //입력받은 수가 1이거나 0이면 1을 반환
    if n==1||n==0{
         return 1;
    //아니라면 
    //example : 5 *4 * 3 * 2  * 1 이댐
    //example :2  *  1
    //example :3 *2 *  1
    }else{
        factorial(n-1)*n
    }
}