2011-01-28 5 views
5

enter image description here조합 실행 및 퍼즐

이미지 내부에이 퍼즐이 있습니다. 내 생각에 따르면 총 길은

2*comb(7,i) for i <- 1 to 7이어야합니다. 여기서 comb은 다음과 같이 정의됩니다. 내 접근 방식이 맞습니까? 나는 내가 얻은 결과와 아래에 기술 된 기능에 관심이 없다.

def comb(N,k): 
    if (k > N) or (N < 0) or (k < 0): 
     return 0L 
    N,k = map(long,(N,k)) 
    top = N 
    val = 1L 
    while (top > (N-k)): 
     val *= top 
     top -= 1 
    n = 1L 
    while (n < k+1L): 
     val /= n 
     n += 1 
    return val 

짧은 시간 내에 너무 많은 질문을하고 싶습니다. 나는 열정적이다.

+0

트릭 질문입니다. 단지 6 명의 아이들이 있습니다;) – sizzzzlerz

+0

@sizzzzlerz : 하하, 정말 ... – unutbu

답변

6

7 명이 있습니다! 아이들을 일렬로 정렬하는 방법 (첫 번째 자리는 7 가지, 두 번째는 6 가지, 두 번째는 6 가지, 세 번째는 5 가지)

각 어린이는 안쪽이나 바깥 쪽을 향하게 할 수 있습니다. 그것은 각 위치에 대한 여분의 비트와 같습니다. 그래서 2 ** 7을 곱하십시오. (즉, 각 지점에 대해 2 가지 선택 사항이 있음).

이제 각 순서에 대해 원을 회전하면 "동일한"순서가됩니다. 동일한 순서를 만드는 7 개의 회전이 있으므로 7로 나눕니다.

대답은 2 ** 7 * 7/7 = 128 * 6입니다! = 92160.