このクイズのヒント
-
ヒント知らないよ
このクイズの参加者(5人)
広告

広告
広告
クイズ大陸関連書籍
![]() ![]() |
![]() |
![]() |
![]()
難易度:
![]() ![]() ?に入る数字は?
1 5 6 25 76 376 ? 9376 90625 109376 890625 2890625 たぶん、この後も続きますが 探せていません。 解答は返信中にあるかも。答えがわかったり、誰かに解いて欲しいときは右上の
![]() |
![]() ![]() この問題の核心は、数列の法則です。
12個まで、Excelで計算しました。 これ以上の数字を計算で出すのは、 Excelでは限界のように思います。 たぶん、この後も続くと思います。 ![]() ![]() 実は、この問題はある法則で
数列が並んでいますが 数字を探し出すのにExcelを使って すべての整数を総当りで計算して 数列を探し出しました。 そのためExcelの行の数 6万5千が一度に計算できる数なので 6桁百万ぐらいまでしか計算できませんでした。 数字の並びに何か法則がありそうなのですが わかる方がいましたら、よろしく お願します。 ![]() ![]() この数列の法則は
2乗をした時に その数が下の桁に現れる数字です。 * * 1×1=1 * * 5×5=25 * * 6×6=36 ** ** 25×25=125 ** ** 76×76=5776 : : : 出現する法則はわかりません。 Excelで総当りで探しました。 ![]() ![]() >電卓では計算できないのですが
パソコンの電卓でできませんか? EXCEL VBAで次のようにして計算させました。 Sub aaaaaaaaaaa() K = 10 For I = 1 To 10000000000# A = I * I Select Case I Case 0 To 9 B = 1 Case 10 To 99 B = 2 Case 100 To 999 B = 3 Case 1000 To 9999 B = 4 Case 10000 To 99999 B = 5 Case 100000 To 999999 B = 6 Case 1000000 To 9999999 B = 7 Case 10000000 To 99999999 B = 8 Case 100000000 To 999999999 B = 9 Case 1000000000 To 9999999999# B = 10 End Select C = A - (Int(A / (10 ^ B))) * 10 ^ B If C = I Then Sheets("sheet1").Cells(K, 1) = I K = K + 1 End If Sheets("sheet1").Cells(1, 1) = I Next End Sub 結果は以下の通り 1 5 6 25 76 376 625 9376 90625 109376 890625 2890625 7109376 12890625 8けたになるまで4時間ぐらいかかりました。 なので、途中でやめましたが、続ければ10桁ぐらいまでは出せそうですね。 もっと、賢いVBAの組み方があるはず。誰か教えて。 ![]() ![]() wikiの未解決問題に挙っているので、少し考えてみました
![]() 根本解決にはなっていませんが、解決の足しにして頂ければ幸いです。 自然数Xが、二乗して下の桁にXが現れる、という性質を満たしているとします。 Xがn桁だったとき、これを下の(n-1)桁と、一番上の桁とに分けて考えます。つまり、 X=A*10^(n-1)+B と書くことにします。 Bは上で書いた通り、Xの下(n-1)桁に相当する自然数で、(n-1)桁です。 Xを二乗して下の桁にXが現れるので、当然下(n-1)桁についてもあてはまるはず。 つまりXを二乗したときに、下(n-1)桁の部分はBが登場します。 一方、Xの二乗の計算を見てみます。 下(n-1)桁の計算に関係するのはXの下(n-1)桁の部分しかありません。 これは筆算を思い出してもらえればわかるかと思います。 つまり下(n-1)桁の部分に関与するのはXの下(n-1)桁の部分、つまり一番上の桁の数字Aには関係ないということがわかります。 これは、X^2の計算結果の下(n-1)桁は、B^2の計算結果の下(n-1)桁と一致する、ということです。 したがって、下(n-1)桁を見るとB^2と結果が一致しそれがBになる、ということです。 なので、上の性質を満たすXがあると、その一番上の桁を取り払ってできた数字も同じ性質を満たす、ということがわかります。 (例)90625→(0625)→625→25→5 これは先にいろんな方が挙げている数字を見れば当たり前ですね ![]() ![]() ![]() 長いので分割しました。
長文、連レス失礼します ![]() さらに上のコメントの内容を繰り返せば、一桁になるまで桁を落としていけます。 一桁にまでしたときに、上の性質を満たすのは5か6だけなので、上の性質をみたすどんな桁の自然数であっても、その種類は一の位が5か6の物しかないということがわかります。 では逆に、もしある数Xがあったときに、その一番左に数字を付け加えて一つ桁を大きくしたい場合、どのような数字を付け加えれば良いのかを考えてみます。 Xが上の性質を満たすなら、下(n-1)桁に相当する自然数Bも同様の性質を満たさなければいけないことがわかりました。 もう一度二乗の計算を見てみます。 X^2 ={A*10^(n-1)+B}^2 =A^2*10^(2n-2)+2AB*10^(n-1)+B^2 下(n-1)桁に関与するのはB^2でこれはBと一致するので B^2=B+C*10^(n-1)+D*10^n と書けます。 ここでCはB^2の下からn桁目の数字、Dはそれ以上の部分をまとめて書いたものです。 (例 625^2=390625なら、C=0、D=39となります) これを上の式に代入していくと、 X^2 =A^2*10^(2n-2)+2AB*10^(n-1)+B+C*10^(n-1)+D*10^n です。 このうち、下n桁にだけ関連する部分、つまり10^(n-1)までに関連する部分だけを取り出します。 一桁だとAとかBとかという話自体が意味をなさいないので、nは2以上とします。 するとn-1>0だから、2(n-1)>n-1なので、一番最初の項は関連しません。 したがって、関連する部分は 2AB*10^(n-1)+B+C*10^(n-1) です。 ここで2AB*10^(n-1)で、10^(n-1)に関連するのは2ABの一番下の桁だけとなります。 Bはどんどん桁を落としていけば、最終的に5か6になる、という風に言いましたので、一の位は5か6です。 だから2ABの一の位は2*A*5、あるいは2*A*6の結果と一致します。 改めて、関連する部分を書き直すと、 (一の位が5なら) (2*A*5)*10^(n-1)+B+C*10^(n-1) =A*10^n+B+C*10^(n-1) (一の位が6なら) (2*A*6)*10^(n-1)+B+C*10^(n-1) =12*A*10^(n-1)+B+C*10^(n-1) =(10+2)*A*10^(n-1)+B+C*10^(n-1) =A*10^n+2*A*10^(n-1)+B+C*10^(n-1) (一の位が5のとき) このときはX^2の計算結果で、下n桁に関連する部分は B+C*10^(n-1) だけとなります。 これがX=A*10^(n-1)+B と一致するので、C=Aとなります。 Cは何だったかというと、B^2の計算で下からn桁目に登場した数字でした。 つまり(n-1)桁の自然数Bが上の性質を満たすなら、二乗を計算して、下からn桁目の数字を計算し、それをBの左端に付け加えることで、次の桁で上の性質を満たす数Xを作れる、ということです。 実際、確認してみると… 5→5^2=25だから2を付け加える。 25→25^2=625だから6を付け加える。 625→625^2=390625だから0を付け加える。 0625→0625^2=390625だから9を付け加える。(0625を便宜的に4桁の数と見なしました) 90625→90625^2=8212890625だから8を付け加える。 890625 … と、上で挙げられている例と一致しています。 (一の位が6のとき) このときはX^2の計算結果で、下n桁に関連する部分は 2*A*10^(n-1)+B+C*10^(n-1) だけとなります。 これがX=A*10^(n-1)+B と一致するので、2A+C=AつまりA+C=0となります。 実際は2A+CとAの一の位が等しい、ということなので、2A+C=10+AつまりA+C=10と書くとわかりやすくなります。 同様にCはB^2の計算で下からn桁目に登場した数字でした。 つまり(n-1)桁の自然数Bが上の性質を満たすなら、二乗を計算して、下からn桁目の数字を計算します。 ここまでは一の位が5と同じです。 で、出て来た数字を10から引きます。 そうして得られた数字をBの左端に付け加えることで、次の桁で上の性質を満たす数Xを作れる、ということです。 実際、確認してみると… 6→6^2=36だから10-3=7を付け加える。 76→76^2=5776だから10-7=3を付け加える。 376→376^2=141376だから10-1=9を付け加える。 9376→9376^2=87909376だから10-0=10だが、もともと2A+CとAの一の位が等しいという条件だったので、0を付け加える。 09376→09376^2=87909376だから10-9=1を付け加える。(09376を便宜的に5桁の数と見なしました) 109376→109376^2=11963109376だから10-3=7を付け加える。 7109376 … と、上で挙げられている例と一致しています。 試しにマキチャンさんが出した数字の次の数字を求めて見ます。 一の位が5のものは、 12890625^2=166168212890625だから2を付け加えて、212890625が次の桁の数字です。 一の位が6のものは、 7109376^2=50543227109376だから10-2=8を付け加えて、87109376が次の桁の数字です。 パソコンでは桁がそろそろ限界に来ましたので、ここからはプログラムを組む必要があるかもしれませんね ![]() このように一つ上の桁は一意に決まるので、一の位が5のもの、一の位が6のものは、最初の一桁の数字である5と6からすべて作っていけるはずで、桁数を固定すればせいぜい二つしかないことも分かります。 ![]() ![]() さらにもう一つ面白い性質があります。
上で挙げられている数字を、桁が同じもの同士足し算してみます。 5+6=11 25+76=101 625+376=1001 0625+9376=10001 90625+09376=100001(0625や09276を便宜的に加えたことで、実はこのようにうまくいくのでした) 890625+109376=1000001 2890625+7109376=10000001 12890625+87109376=100000001 となります。 なぜならXが上の性質を満たすn桁(便宜的なのも含む)の自然数だとします。 するとX^2-X=Y*10^nと書けます。 X^2-X-Y*10^n=0 と書き直して、これをXの二次方程式と見なします。 これは二つの実数解をもち、それぞれa、b(a<bとする)と書きます。 すると a+b=1、ab=-Y*10^nで、a<0<bとなります。 ここでc=(10^n+1)-bとし、d=1-c=b-10^nとします。 cとdを解に持つ二次方程式を作ってみます。 まずc+d=1です。 c*d ={(10^n+1)-b}*(b-10^n) =-b^2+b+2b*10^n-10^2n-10^n bは元々二次方程式X^2-X-Y*10^n=0の解なので、 b^2-b-Y*10^n=0を満たします。 よって c*d =-Y*10^n+2b*10^n-10^2n-10^n =-{Y-2b+10^n+1}*10^n これを-Z*10^nと表すことにします。 すると、cdを解に持つ二次方程式は、 X^2-X-Z*10^n=0 となります。 解のうち一つは正でcである。 便宜的なn桁も考慮して、さらに最後の桁は5か6なので5≦b≦10^n-4と書ける。 c=(10^n+1)-bからc範囲は 5≦c≦10^n-4となりcも便宜的にn桁となります。 つまり、bが分かれば同じ桁数のcが作れる、ということです。 したがって、以降は一の位が5のシリーズだけを考えれば、一の位が6のシリーズは簡単に作れるということですね ![]() ![]() ![]() HALへの進学が決まった兄に"JavaScript"とかいうヤツでプログラミングしてもらいました
![]() No10も参考にさせてもらいました、ありがとうございます 一の位が6は、3740081787109376 5は、6259918212890625 まで弾き出しました ![]() 足し算も暗算で気持ちよく出来ますね ![]() ![]() ![]() >???さん
お久しぶりでございます ![]() 参考にしていただき恐縮です ![]() 電卓だと15桁も表示が無くって、二乗しても次の数字が分からないんですよね ![]() なので、No.10の桁数でほとんど限界でした。 おそらくNo.8のマキチャンさんの方法よりかは速くなっているはず… 時間が気になるので、どれぐらいかかったかお兄さんに尋ねていただけませんか? 足して100...001になるのは気持ちいいですね ![]() 一の位が5のものと6のものをそれぞれ別々に出した場合には検算になりますし ![]() ![]() ![]() あ、遅くなりましたが、お久しぶりです
![]() 時間というのはプログラミングの所要時間を除いた、コンピュータの計算だけの事でしょうか? そうであったら一瞬だそうです ![]() 長〜い長〜い式を入れて(それを入れるのに10分ぐらい)、ポチッと計算させるボタンを押すと、その瞬間に16ケタまで出るとの事。 ただ、JavaScriptは17ケタ以上が表示出来ないので、これ以上は不可能らしいです ![]() ![]() ![]() >???さん
そうです、コンピュータの計算時間だけのことです。 やはり一瞬ですか!向上したようでよかったです ![]() そして16ケタが限界ですか… ![]() 現状(???さんのお兄さんのプログラム)はおそらく二乗して次の桁を求めているのだと思うのですが、これ以上の桁数を求めるには、新しくプログラムの組み方を考えるか、次の桁数を求める別の方法を考えないとダメでしょうね ![]() ![]() ![]() 色々実験してみた結果、表示の面でも計算の面でもキビシイようです
表示できるのは16ケタまで、計算できるのは29ケタくらいまで、みたいですね だからもっと出すにはJavaScript以外の物を使わないと… ![]() ![]() ![]() プログラムを視野に入れるなら、次のような考え方でいけると思います。
可能なら、???さんや他の方にもプログラムを組んでいただいて検証していただければうれしいです。 10^nの桁の数字をa[n]とする。 10^nの桁まで求めた数字X[n]は X[n]=a[n]*10^n+a[n-1]*10^(n-1)+...+a[1]*10+a[0] と書ける。 これの二乗を計算したとき、10^(n+1)の桁は a[1]*a[n]+a[2]*a[n-1]+...+a[n]*a[1] と10^nの桁以下からの繰り上がりbとの和である。 これの一の位が10^(n+1)の桁の数字になり、それがa[n+1]を決めることになる(a[0]=5か6で決め方は異なるが)。 a[0]=5の場合を考える。 この繰り上がりbがどうなっているかを考える。 X[n]の二乗の10^nの桁の計算をすると a[0]*a[n]+a[1]*a[n-1]+...+a[n]*a[0] と10^(n-1)の桁以下からの繰り上がりcとの和になるので、 a[0]*a[n]+a[1]*a[n-1]+...+a[n]*a[0]+c である。 題意よりこれの一の位がa[n]に一致していたはずであり、a[n]を引いて10で割った数 (a[0]*a[n]+a[1]*a[n-1]+...+a[n]*a[0]+c-a[n])/10 が次の10^nの桁への繰り上がりbになる。 ここで、繰り上がりcは10^(n-1)以下の計算で生じるので、a[n]*10^nは計算式に全く含まれない。 すなわちあらかじめX[n-1]の二乗を計算し、10^(n-1)の桁以下から10^nの桁への繰り上がりがdだったとすると、dをそのままcに用いることができる。 したがってX[n-1]の二乗計算で10^(n-1)の桁以下からの10^nの桁への繰り上がりをb[n]と書くことにすると、X[n]^2の10^nへの繰り上がりcもX[n-1]^2の10^nへの繰り上がりdも c=d=b[n] である。 またX[n]^2の10^(n+1)への繰り上がりbは b=b[n+1] と書ける。 以上をふまえて、10^(n+1)の桁の数字を求めたい場合(a[0]=5のときを考えることにする)。 10^nの桁の数字a[n]まで求まっているとして、上で考えたようにX[n]の二乗を求めて次のa[n+1]を求めるので S[n]=a[0]*a[n]+a[1]*a[n-1]+...+a[n]*a[0] T[n]=a[1]*a[n]+a[2]*a[n-1]+...+a[n]*a[1] と、繰り上がりb[n]が計算できているとして、まず10^nの桁の計算をしてみると S[n]+b[n] であり、題意よりこれの一の位がa[n]に一致している。 したがって10^(n+1)への繰り上がりb[n+1]は b[n+1]=(S[n]+b[n]-a[n])/10 である。 さらに10^(n+1)の桁は T[n]+b[n+1] である。 これの一の位がa[n+1]と求まる。 なおn≠0であれば、S[n]=T[n-1]+2a[0]a[n] でもある。 具体的にやってみると a[0]=5、S[0]=25、T[0]=0、b[0]=0 であり、10^0すなわち一の位の計算は S[0]+b[0]=25 で、これの一の位がa[0]に確かになっている。 10^1への繰り上がりb[1]は b[1]=(S[0]+b[0]-a[0])/10=(25+0-5)/10=2 である。 さらに10^1の桁は T[0]+b[1]=0+2=2 である。 これの一の位が2=a[1]である。 以下同じように計算していきますと、a[n],S[n],T[n],b[n]は下のようになると思います。 n a[n] S[n] T[n] b[n] 0 5 25 0 0 1 2 20 4 2 2 6 64 24 2 3 0 24 36 6 4 9 126 36 3 5 8 116 140 12 6 2 160 104 12 7 1 114 109 17 8 2 129 164 13 9 8 244 156 14 10 1 166 150 25 11 9 240 104 19 12 9 194 324 25 13 5 374 283 21 14 2 303 282 39 15 6 342 378 34 16 5 428 396 37 17 2 416 306 46 18 2 326 262 46 19 9 352 445 37 … n=15までは???さんのコメントと一致していることは確認できました。 さらに、例えばn=19つまり20桁の数字なら 92256259918212890625 と予想されます。 次はa[0]=6も試してみます。 足して100...1になっているようなら正しそうですが果たして… ![]() ![]() ![]() a[0]=6なら
>T[n]+b[n+1] >である。 >これの一の位がa[n+1]と求まる。 の部分を >T[n]+b[n+1] >これの一の位をeとすれば10-eが次のa[n+1]である。 >(ただしe=0ならa[n+1]=0) のように変更するだけですね ![]() 各桁a[n]と繰り上がりb[n]だけ、n=0からn=19まで順に書きますと a[n] 6、7、3、9、0、1、7、8、7、1、8、0、0、4、7、3、4、7、7、0 b[n] 0、3、8、9、15、15、8、18、21、27、31、32、29、16、33、33、33、41、46、42 でn=19つまり20桁の数字は 07743740081767109736 となって、5シリーズと並べて書きますと、 92256259918212890625(5シリーズ) 07743740081767109376(6シリーズ) で100...01になっていますね ![]() 二乗して検算すればなお確実なんでしょうが、電卓は桁足らず… ![]() |