교대 숫자 는 모든 숫자가 짝수와 홀수를 번갈아 사용하는 숫자입니다. 예 : 2703과 7230은 교대 숫자이지만 2730은 그렇지 않습니다.
숫자는 두 배가 교대 숫자 일 때 매우 교대로 됩니다. 예를 들어 3816은 매우 번갈아 가며, 왜냐하면 7632는 번갈아가는 숫자이기 때문입니다.
당신에게 질문은 : 아주 번갈아가는 숫자가 몇 개입니까? (숫자는 하나 또는 여러 개의 0으로 시작할 수 없습니다)
물론이 문제는 프로그래밍으로 해결할 수 있지만 수학적으로도 풀 수 있습니다! 행운을 빕니다!
NB :이 퍼즐은 네덜란드 수학 올림피아드의 일부입니다. 이 PDF
코멘트
답변
이러한 숫자는 다음과 같습니다.
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
#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))
1818
, 이는 를 누른 다음 다시7272
로 이동합니다. double과 double-double이 5 자리가되도록 허용하면 더 많을 수 있습니다 …3
,9
,18
,109
,309
,418
,818
,909
,1818
. 이 중9
,109
및909
만 매우 매우 매우 번갈아 가며. 저는 ' 5 개의 레벨을 ' 찾는 것이 불가능하다고 ' 확실합니다. 매우 번갈아 나타납니다.