Python/Beakjoon
1010번: 다리놓기
hyunjoo
2021. 8. 6. 16:02
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))
>>정수를 나누는 과정에서 소수점이 발생하여 오차가 나타나는데 오차 없애줘야함
반응형