You will be fine

<Algorithm> 26. 1010번 다리놓기

by BFine
반응형

1. 1010번 다리놓기

  • nCr로 풀 수 있다. 공식 n!/r!(n-r)!

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
29
30
31
32
33
34
35
36
37
38
39
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.StringTokenizer;
 
public class Main {
 
     public static void main(String[] args) throws NumberFormatException, IOException {
         
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st;
         ArrayList<BigInteger> resultList = new ArrayList<>();
         
         int N = Integer.parseInt(br.readLine());
         
         for(int T = 0; T < N; T++) {
             BigInteger res = new BigInteger("1");
             
             st = new StringTokenizer(br.readLine());
             int r = Integer.parseInt(st.nextToken());
             int n = Integer.parseInt(st.nextToken());             
            
             for(int i = 0; i < r; i++) {
                 res = res.multiply(BigInteger.valueOf(n-i));
                 // n * n-1 * n-2 ~~ * n-r+1
                 res = res.divide(BigInteger.valueOf(i+1));
                 // r!
             }
             
             resultList.add(res);
         }
         
        for(BigInteger b:resultList) {
            System.out.println(b);
        }
     }     
}
cs


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
29
30
31
32
33
34
35
36
37
38
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.StringTokenizer;
 
public class AA {
 
    public static void main(String[] args) throws IOException {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        ArrayList<BigInteger> list = new ArrayList<>();
        int N = Integer.parseInt(br.readLine());
         
        for(int t = ; t < N; t ++) {
            BigInteger bg = new BigInteger("1");
            BigInteger bg2 = new BigInteger("1");
            
             st = new StringTokenizer(br.readLine());
             int r = Integer.parseInt(st.nextToken());
             int n = Integer.parseInt(st.nextToken());             
            
             
            for(int i = n; i > r; i--) {
                bg = bg.multiply(bg.valueOf(i));
                bg2 = bg2.multiply(bg.valueOf(i-r));
                System.out.println(bg.valueOf(i)+" "+bg.valueOf(i-r)+" ");
            }
            list.add(bg.divide(bg2));    
        }
        
        for(BigInteger bg : list)
            System.out.println(bg);
    }
}
 
cs





반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기