furyhunter   2년 전

사이트 N과 M이 주어진다고 할 때, 각 점을 N0, N1, N2, ..., M0, M1, M2, ... 라고 한다면

N0가 M0에 고정될 때 경우의 수는 M - 1개 중에 N - 1개를 고르는 경우의 수,

N0가 M1에 고정된다면 M - 2개 중에 N - 1개를 고르는 경우의 수..

하는 식이기에 모든 경우의 수는

(M - 1) C (N - 1) + (M - 2) C (N - 1) + ... (좌우가 같아질 때)

까지의 합이 된다고 생각해서 코드를 짜봤습니다.

그 결과 이것저것 테스트해봤는데 작은 숫자들은 잘 나오는 것 같았습니다.

근데 예제에서 13 29는 67863915가 아니라 67863911이 나오더라구요..

혹시 제 아이디어나 코드에서 문제가 있을까요..?


cubelover   2년 전

double의 실수 오차 때문입니다

furyhunter   2년 전

조언 감사드립니다!

코드를 아래와 같이 고쳐서 예제 13 29 에 대해서는 제대로 출력이 됩니다.

그런데 제출해보니 50%에서 틀렸다고 나오네요..

혹시 다른 문제가 있을까요..?

댓글을 작성하려면 로그인해야 합니다.