교대 숫자 는 모든 숫자가 짝수와 홀수를 번갈아 사용하는 숫자입니다. 예 : 2703과 7230은 교대 숫자이지만 2730은 그렇지 않습니다.

숫자는 두 배가 교대 숫자 일 때 매우 교대로 됩니다. 예를 들어 3816은 매우 번갈아 가며, 왜냐하면 7632는 번갈아가는 숫자이기 때문입니다.

당신에게 질문은 : 아주 번갈아가는 숫자가 몇 개입니까? (숫자는 하나 또는 여러 개의 0으로 시작할 수 없습니다)

물론이 문제는 프로그래밍으로 해결할 수 있지만 수학적으로도 풀 수 있습니다! 행운을 빕니다!

NB :이 퍼즐은 네덜란드 수학 올림피아드의 일부입니다. 이 PDF

코멘트

  • 이 시나리오에서 5000은 가능한 매우 번갈아가는 숫자의 최대 값입니다. 맞나요?
  • 교대로 나오는 숫자 자체는 4 자리 여야하지만 번갈아 사용하는 숫자의 두 배는 그 이상일 수 있습니다.
  • 우리가 ' 4 자리 숫자를 고수한다고 가정하면 ' 매우 매우 번갈아가는 숫자 : 1818, 이는 를 누른 다음 다시 7272로 이동합니다. double과 double-double이 5 자리가되도록 허용하면 더 많을 수 있습니다 …
  • 더블이 5 자리 인 4 자리 대체 숫자는 안됩니다 . 증명 : 4 자리 숫자의 두 배인 모든 5 자리 숫자는 홀수 인 1로 시작해야합니다 . 2의 배수는 모두 짝수로 끝나야합니다. 홀수로 시작하고 짝수로 끝나는 홀수 숫자는 번갈아있을 수 없기 때문에 5000에서 9999 사이의 매우 번갈아가는 숫자는있을 수 없습니다.
  • 여기에 더 깔끔한 관찰을 추가하기 만하면됩니다. ' 10000 미만의 매우 매우 번갈아 나타나는 숫자의 전체 목록 : 3, 9 , 18, 109, 309, 418, 818, 909, 1818. 이 중 9, 109909 만 매우 매우 매우 번갈아 가며. 저는 ' 5 개의 레벨을 ' 찾는 것이 불가능하다고 ' 확실합니다. 매우 번갈아 나타납니다.

답변

이러한 숫자는 다음과 같습니다.

70

숫자를 두 배로하면 결과의 숫자는 다음과 같은 경우에만 해당됩니다. 오른쪽은 전달되지 않았습니다.

따라서 $ x $의 숫자가 $ LHLH $ 인 경우에만 $ 2x $가 번갈아 표시됩니다. 여기서 $ L \ in \ {0,1,2,3 , 4 \} $ 및 $ H \ in \ {5,6,7,8,9 \} $.

(부수적으로, 이것은 $ x $가 매우 번갈아 가며 $ 2x $는 여전히 4 자리 숫자이므로 $ x < 5000 $가 필요합니다).

$ x $가 번갈아 나타나는 경우 OEOE 또는 EOEO처럼 보입니다. $ x $가 매우 교대로 표시 되려면 $ LHLH $도되어야합니다. 따라서이 두 가지 제약을 모두 충족하는 방법의 수를 세어 보겠습니다.

  • OEOE

    : 각 홀수는 낮아야합니다. 즉, 각각 $ 1 $ 또는 $ 3 $입니다. 각각 짝수는 높아야하므로 $ 6 $ 또는 $ 8 $입니다. 총 $ 2 \ cdot2 \ cdot2 \ cdot2 = 16 $ 가능성에 대해 각 숫자에 대해 두 가지 선택이 있습니다.

  • EOEO : 이제 짝수는 낮고 ($ 0,2 $ 또는 $ 4 $) 배당률은 높습니다 ($ 5,7 $ 또는 $ 9 $). 첫 번째 숫자는 0이 될 수 없으므로 $ 2 \ cdot3 \ cdot3 \ cdot3 = 54 $ 가능성이 있다는 점을 제외하고 각 숫자에 대해 세 가지 선택이 있습니다.

이 두 가지 개수가 원하는 답변에 추가됩니다.

댓글

  • 나 ' m 설명에 약간의 손실이 있습니다. . LHLH에 도착하지만 그 후에는 ' m 밀집되어 있습니까?
  • OP에 대한 의견에 따르면 번갈아가는 숫자의 두 배가 될 수 있습니다. 4 자리 이상입니다.
  • @GentlePurpleRain ' 문제가되지 않습니다. 5 자리 숫자는 1로 시작해야하지만 마지막 숫자는 짝수 여야합니다. 따라서 ' 교체 할 수 없습니다.
  • @f ' ' 예,하지만 5 자리 숫자도 잘라 내지 않습니다.
  • @mikeearnest가 답변에 약간을 추가했습니다. 동의하지 않으면 언제든지 롤백하세요. ' 좋아요

답변

Answe r은

70

수동으로 계산했습니다. 여전히 수학적 해결책을 찾고 있습니다.

댓글

  • ' 죄송합니다. '는 대답이 아닙니다. 이 답변은 어떻게 얻었습니까?
  • @xander 최근 수정 사항 확인
  • 나는 ' 죄송합니다. 여전히 정답이 아닙니다.
  • 잠깐, 내가 뭘 잘못했는지 봤어, 기다려
  • @xander 지금은 어때?

답변

젠장이 brute force 를 답변하기 전에 시작했는데

70

VBA

이 경로에 대한 더 나은 논리는

if (one mod 2 = three mod 2) and (two mod 2 = four mod 2) then if one mod 2 <> two mod 2 then counter increase 

답변

자, 다시 무차별 대입!

답은 다른 답변에서 지적한 바와 같습니다.

70

JSFiddle : 소스 코드 및 4 자리 대체 숫자의 전체 목록

답변

정답은 다음과 같습니다 :

70


#AnubhavBalodhi, puzzling.stackexchange,26036, 1/2/16 2341 hrs E=["0","2","4","6","8"] O=["1","3","5","7","9"] ans=0 alters=[] def Alt(num): N=str(num) if len(N)<5: #4 digit if (N[0] in E and N[1] in O and N[2] in E and N[3] in O) or (N[0] in O and N[1] in E and N[2] in O and N[3] in E): alters.append(num) else: #5 digit if (N[0] in E and N[1] in O and N[2] in E and N[3] in O and N[4] in E ) or (N[0] in O and N[1] in E and N[2] in O and N[3] in E and N[4] in O): alters.append(num) for num in range(1000,10**5): Alt(num) #print(num) print(len(alters)) for numb in alters: if numb<9999 and numb*2 in alters: #if the number in alternating list is of 4 digits, and its double is also in the list. print(numb) ans+=1 print("ans is %d" %(ans)) 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다