Python/Beakjoon

1010번: 다리놓기

hyunjoo 2021. 8. 6. 16:02

1010번: 다리 놓기 (acmicpc.net)

 

1010번: 다리 놓기

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.

www.acmicpc.net

>>

중요한 점은 다리끼리 서로 겹치면 안된다는 점이다.

서쪽 N개, 동쪽 M개의 사이트

1)N=1 ,N!=M

  M가지 방법

 

2)N=M

  1가지 방법

 

3)N!=1, N<M

 M개중 N개를 선택하는 조합

조합 공식

def f(m):
    r=1
    for i in range(1,m+1):
        r*=i
    return r


T=int(input())

for i in range(T):
    N,M=map(int,input().split())
    if N==M:
        print('1')
    elif N==1:
        print(M)
    else:
        a=f(M)
        b=f(N)
        c=f(M-N)
        d=a/b/c
        print(round(d))

>>정수를 나누는 과정에서 소수점이 발생하여 오차가 나타나는데 오차 없애줘야함

 

 

반응형