交互の数字は、すべての数字が偶数と奇数の間で交互になる数字です。例:2703と7230は交互の数字ですが、2730はそうではありません。
数字が2倍の場合も非常に交互です。たとえば、3816は非常に交互の数字です。 7632も交互の数字であるため、交互になります。
質問は、4桁の非常に交互の数字がいくつあるかということです(数字は1つまたは複数のゼロで始めることはできません)
もちろん、この問題はプログラミングによって解決できますが、数学的にも解決できます。頑張ってください!
注:このパズルは自分で思いついたわけではありません。オランダの数学オリンピックの一部です。このPDFをご覧ください
コメント
回答
そのような数はあります
70
数値を2倍にすると、結果の桁は、右は運ばなかった。
したがって、$ 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つの選択肢があり、合計$ 2 \ cdot2 \ cdot2 \ cdot2 = 16 $の可能性があります。
-
EOEO :現在、偶数は低く($ 0,2 $または$ 4 $)、オッズは高くなっています($ 5,7 $または$ 9 $)。各桁には3つの選択肢がありますが、最初の桁をゼロにすることはできないため、$ 2 \ cdot3 \ cdot3 \ cdot3 = 54 $の可能性があります。
これら2つカウントは希望の答えに追加されます。
コメント
- I ' 。LHLHに到達しましたが、その後、'密度が高いのでしょうか?
- OPのコメントによると、交互の数の2倍は4桁以上。
- @GentlePurpleRain '重要ではありません。5桁の数字は1で始まる必要がありますが、最後の数字は偶数である必要があります。そのため、'交互に使用することはできません。
- @f ' 'ええ、でも5桁の数字はとにかくカットされません
- @mikeearnestはあなたの答えに少し追加しました。'でなければ、遠慮なくロールバックしてください。気に入った
回答
回答rは
70
手動でカウントしました。まだ数学的な解決策を考え出そうとしています。
コメント
- '申し訳ありませんが、'は答えではありません。どうやってこの答えにたどり着きましたか?
- @xander私の最新の編集を確認してください
- '申し訳ありませんが、それでも正しい答えではありません
- 待って、私が間違ったことを確認しました。しばらくお待ちください
- @xander今はどうですか?
回答
くそー私は答えの前にこのブルートフォースを開始しました
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
、これは2倍の、次に7272
に移動します。ダブルとダブルダブルを5桁にすると、さらに多くなる可能性があります…3
、9
、18
、109
、309
、418
、818
、909
、1818
。これらのうち、9
、109
、および909
のみが非常に非常に 非常に 交互に。 ' 5つのレベルの'を見つけるのは不可能だと確信しています'