昨日はプログラミングで各項の計算方法を考えました。Image may be NSFW. Clik here to view. 問題 □log□ □□□ -□ C□ ×□-□=2020 上式は小町算の覆面算です。 小町算は1から9が1つずつ登場する計算式です。 9つの□を異なる1から9までの数字で埋めよ。 logは対数、Cはコンビネーション(組み合わせ)です。 でしたが、これをプログラミングの問題と解釈して、プログラムを書いて解いてみようという試みです。 そこで、プログラミング問題として、 1) |左辺-右辺|<1に該当する解をすべて求めよ。 2) 左辺が自然数になる解をすべて求めよ。 3) 等号が満たされる解をすべて求めよ。 が求まるようなプログラムを考えてみようということでしたね。 プログラミングして数学の命題の証明って、なかなか受け入れがたいものがあるかとは思う。 ただ、プログラムが間違っていないならば、出力されるデータを分析して、足りないところ、余計なところなどが見えてくることで、頭の中が整理されて、新しい真理にたどり着けることもある。 1) では、浮動小数点演算をして、右辺-左辺の絶対値が1未満のものを探す。 あわよくば差が0になるものがあれば、それが解である。 誤差が出てしまったら、解はないのか、その辺が争点となりそうです。 2) では、冪乗の項が整数となるものを探すということと同義である。 つまり、1)とはちょっと違う角度からのアプローチということです。 pow関数、log関数は浮動小数点演算なので、浮動小数点演算による誤差を想定して、何をもって整数なのか、そこが難しいところではあるが、避けては通れないであろう。 3) は、1)や2)に囚われない発想で、皆様への宿題という感じです。 私からは特に用意していませんが、一番最初の記事で解を1つ見つけているので、それが見つかるようなプログラムを作れるのかということです。 1)のプログラムの出力結果
5^log_3(186)-7C2x4-9=2019.4010184661 9^log_5(267)-4C1x8-3=2019.4862357006 9^log_5(267)-8C1x4-3=2019.4862357006 7^log_4(231)-9C8x6-5=2019.4944193820 8^log_6(743)-9C5x1-2=2019.5844288217 6^log_5(943)-7C2x1-8=2019.6726274134 9^log_6(514)-8C2x3-7=2019.7599841002 5^log_4(719)-6C2x3-8=2019.8101901903 9^log_7(851)-4C3x2-6=2019.9026507147 8^log_6(712)-5C4x3-9=2019.9472310830 8^log_4(169)-7C3x5-2=2020.0000000000 9^log_7(854)-6C3x1-2=2020.0005481962 6^log_5(937)-4C2x1-8=2020.1661901498 9^log_7(853)-6C2x1-4=2020.3008401729 5^log_4(718)-6C3x2-9=2020.4636135092 8^log_5(367)-4C1x9-2=2020.8497760356 8^log_5(367)-9C1x4-2=2020.8497760356
printfのフォーマットを "%d^log%d(%d%d%d)-%dC%d-%d=%.10lf\n" のようにして出力したものを、Excelに取り込み、右辺の値を切り離してソートしました。 プログラムは2020.0000000000のように、小数点以下10桁が0の整数らしい値を出してきました。 double型は、10進数では14桁が有効桁数と考えられますので、 8^log_4(169)-7C3x5-2=2020 が整数解であることは、間違いないでしょうし、他に整数解が無いということも解ります。 2)のプログラムの出力結果なのだが、なんと7992行分で、アメブロでは4万文字制限があるため、テキストではすべてを列挙することが出来ません。 そこで、その2でコンビネーションの項での最大値を考えました。f Cg =9 C5 =9 C4 =126f Cg ×h=126×8=1008 alogb cde -1008-7=2020 alogb cde -1015=2020 というわけで、2020と1015未満の差の部分と、直前直後1つずつ、0の直前直後1つずつ、データの最小と最大を書いてみます。
2^log_4(361)-9C5x8-7= -996.000000000000000 … 4^log_8(512)-7C6x9-3= -2.000000000000000 7^log_8(512)-9C3x4-6= 1.000000000000000 … 9^log_8(512)-7C6x3-4= 704.000000000000000 7^log_4(256)-9C3x8-1= 1728.000000000000000 7^log_4(256)-8C3x9-1= 1896.000000000000000 9^log_4(128)-7C3x6-5= 1972.000000000000000 9^log_4(128)-7C3x5-6= 2006.000000000000000 8^log_4(169)-7C3x5-2= 2020.000000000000000 9^log_4(128)-6C3x7-5= 2042.000000000000000 9^log_4(128)-7C5x6-3= 2058.000000000000000 9^log_4(128)-6C3x5-7= 2080.000000000000000 8^log_4(169)-7C2x5-3= 2089.000000000000000 9^log_4(128)-5C3x7-6= 2111.000000000000000 9^log_4(128)-7C5x3-6= 2118.000000000000000 9^log_4(128)-5C3x6-7= 2120.000000000000000 8^log_4(169)-7C3x2-5= 2122.000000000000000 8^log_4(169)-5C2x7-3= 2124.000000000000000 8^log_4(169)-5C3x7-2= 2125.000000000000000 8^log_4(169)-7C2x3-5= 2129.000000000000000 8^log_4(169)-7C5x3-2= 2132.000000000000000 9^log_4(128)-6C5x7-3= 2142.000000000000000 9^log_4(128)-7C6x5-3= 2149.000000000000000 8^log_4(169)-7C5x2-3= 2152.000000000000000 8^log_4(169)-5C2x3-7= 2160.000000000000000 9^log_4(128)-7C6x3-5= 2161.000000000000000 9^log_4(128)-6C5x3-7= 2162.000000000000000 8^log_4(169)-5C3x2-7= 2170.000000000000000 8^log_4(169)-3C2x7-5= 2171.000000000000000 8^log_4(169)-3C2x5-7= 2175.000000000000000 7^log_4(256)-9C3x1-8= 2309.000000000000000 7^log_4(256)-8C1x9-3= 2326.000000000000000 7^log_4(256)-9C1x8-3= 2326.000000000000000 7^log_4(256)-8C3x1-9= 2336.000000000000000 7^log_4(256)-3C1x9-8= 2366.000000000000000 7^log_4(256)-9C1x3-8= 2366.000000000000000 7^log_4(256)-3C1x8-9= 2368.000000000000000 7^log_4(256)-8C1x3-9= 2368.000000000000000 7^log_4(256)-9C8x3-1= 2373.000000000000000 7^log_4(256)-9C8x1-3= 2389.000000000000000 8^log_4(196)-7C3x5-2= 2566.999999999997700 8^log_4(196)-7C2x5-3= 2635.999999999997700 8^log_4(196)-7C3x2-5= 2668.999999999997700 8^log_4(196)-5C2x7-3= 2670.999999999997700 8^log_4(196)-5C3x7-2= 2671.999999999997700 8^log_4(196)-7C2x3-5= 2675.999999999997700 8^log_4(196)-7C5x3-2= 2678.999999999997700 8^log_4(196)-7C5x2-3= 2698.999999999997700 8^log_4(196)-5C2x3-7= 2706.999999999997700 8^log_4(196)-5C3x2-7= 2716.999999999997700 8^log_4(196)-3C2x7-5= 2717.999999999997700 8^log_4(196)-3C2x5-7= 2721.999999999997700 8^log_4(256)-9C3x7-1= 3507.000000000000000 … 8^log_2(976)-5C4x1-3=929714168.000000830000000
printfのフォーマットを "%d^log%d(%d%d%d)-%dC%d-%d=%25.15lf\n" のようにして出力したものを、Excelに取り込み、右辺の値を切り離してソートしました。 左辺が0になるケースはありませんでした。 小数点以下何桁0が続けば、小数点以下何桁9が続けば、整数とみなすのか。 前に書いたとおり、double型の10進数での有効桁数は14桁ということで、
if ( x > 0 ) { y = floor(x*pow(10,13-floor(log10(x)))+0.5)/pow(10,13-floor(log10(x))); } else { y = floor(x*pow(10,13-floor(log10(-x)))+0.5)/pow(10,13-floor(log10(-x))); }
左辺の値xが求まったとして、
log10を取って10進数の整数部の桁数を求める。 13桁から引いて、powで10の冪乗とした。 つまり、小数点の位置をずらしたわけです。 0.5を加えて、floorを取って、小数点以下を切り捨て。 小数点の位置を戻してたものをyとしました。 このyを使って、整数判定を行いました。 さて、7992行分のデータ。 もうすこし活かしましょう。 冪乗の項だけをピックアップして、重複の削除して、ソートしたものを新たなデータとします。
2^log_4(169) 2^log_4(196) 2^log_4(361) 2^log_4(576) 2^log_4(961) 3^log_4(256) 3^log_8(512) 3^log_9(256) 3^log_9(576) 3^log_9(625) 3^log_9(784) 3^log_9(841) 4^log_2(135) 4^log_2(136) 4^log_2(137) 4^log_2(138) 4^log_2(139) 4^log_2(153) 4^log_2(156) 4^log_2(157) 4^log_2(158) 4^log_2(159) 4^log_2(163) 4^log_2(165) 4^log_2(167) 4^log_2(168) 4^log_2(169) 4^log_2(173) 4^log_2(175) 4^log_2(176) 4^log_2(178) 4^log_2(179) 4^log_2(183) 4^log_2(185) 4^log_2(186) 4^log_2(187) 4^log_2(189) 4^log_2(193) 4^log_2(195) 4^log_2(196) 4^log_2(197) 4^log_2(198) 4^log_2(315) 4^log_2(316) 4^log_2(317) 4^log_2(318) 4^log_2(319) 4^log_2(351) 4^log_2(356) 4^log_2(357) 4^log_2(358) 4^log_2(359) 4^log_2(361) 4^log_2(365) 4^log_2(367) 4^log_2(368) 4^log_2(369) 4^log_2(371) 4^log_2(375) 4^log_2(376) 4^log_2(378) 4^log_2(379) 4^log_2(381) 4^log_2(385) 4^log_2(386) 4^log_2(387) 4^log_2(389) 4^log_2(391) 4^log_2(395) 4^log_2(396) 4^log_2(397) 4^log_2(398) 4^log_2(513) 4^log_2(516) 4^log_2(517) 4^log_2(518) 4^log_2(519) 4^log_2(531) 4^log_2(536) 4^log_2(537) 4^log_2(538) 4^log_2(539) 4^log_2(561) 4^log_2(563) 4^log_2(567) 4^log_2(568) 4^log_2(569) 4^log_2(571) 4^log_2(573) 4^log_2(576) 4^log_2(578) 4^log_2(579) 4^log_2(581) 4^log_2(583) 4^log_2(586) 4^log_2(587) 4^log_2(589) 4^log_2(591) 4^log_2(593) 4^log_2(596) 4^log_2(597) 4^log_2(598) 4^log_2(613) 4^log_2(615) 4^log_2(617) 4^log_2(618) 4^log_2(619) 4^log_2(631) 4^log_2(635) 4^log_2(637) 4^log_2(638) 4^log_2(639) 4^log_2(651) 4^log_2(653) 4^log_2(657) 4^log_2(658) 4^log_2(659) 4^log_2(671) 4^log_2(673) 4^log_2(675) 4^log_2(678) 4^log_2(679) 4^log_2(681) 4^log_2(683) 4^log_2(685) 4^log_2(687) 4^log_2(689) 4^log_2(691) 4^log_2(693) 4^log_2(695) 4^log_2(697) 4^log_2(698) 4^log_2(713) 4^log_2(715) 4^log_2(716) 4^log_2(718) 4^log_2(719) 4^log_2(731) 4^log_2(735) 4^log_2(736) 4^log_2(738) 4^log_2(739) 4^log_2(751) 4^log_2(753) 4^log_2(756) 4^log_2(758) 4^log_2(759) 4^log_2(761) 4^log_2(763) 4^log_2(765) 4^log_2(768) 4^log_2(769) 4^log_2(781) 4^log_2(783) 4^log_2(785) 4^log_2(786) 4^log_2(789) 4^log_2(791) 4^log_2(793) 4^log_2(795) 4^log_2(796) 4^log_2(798) 4^log_2(813) 4^log_2(815) 4^log_2(816) 4^log_2(817) 4^log_2(819) 4^log_2(831) 4^log_2(835) 4^log_2(836) 4^log_2(837) 4^log_2(839) 4^log_2(851) 4^log_2(853) 4^log_2(856) 4^log_2(857) 4^log_2(859) 4^log_2(861) 4^log_2(863) 4^log_2(865) 4^log_2(867) 4^log_2(869) 4^log_2(871) 4^log_2(873) 4^log_2(875) 4^log_2(876) 4^log_2(879) 4^log_2(891) 4^log_2(893) 4^log_2(895) 4^log_2(896) 4^log_2(897) 4^log_2(913) 4^log_2(915) 4^log_2(916) 4^log_2(917) 4^log_2(918) 4^log_2(931) 4^log_2(935) 4^log_2(936) 4^log_2(937) 4^log_2(938) 4^log_2(951) 4^log_2(953) 4^log_2(956) 4^log_2(957) 4^log_2(958) 4^log_2(961) 4^log_2(963) 4^log_2(965) 4^log_2(967) 4^log_2(968) 4^log_2(971) 4^log_2(973) 4^log_2(975) 4^log_2(976) 4^log_2(978) 4^log_2(981) 4^log_2(983) 4^log_2(985) 4^log_2(986) 4^log_2(987) 4^log_3(729) 4^log_8(125) 4^log_8(216) 4^log_8(512) 4^log_8(729) 5^log_3(729) 6^log_3(729) 6^log_8(512) 7^log_4(256) 7^log_8(512) 8^log_2(134) 8^log_2(135) 8^log_2(136) 8^log_2(137) 8^log_2(139) 8^log_2(143) 8^log_2(145) 8^log_2(146) 8^log_2(147) 8^log_2(149) 8^log_2(153) 8^log_2(154) 8^log_2(156) 8^log_2(157) 8^log_2(159) 8^log_2(163) 8^log_2(164) 8^log_2(165) 8^log_2(167) 8^log_2(169) 8^log_2(173) 8^log_2(174) 8^log_2(175) 8^log_2(176) 8^log_2(179) 8^log_2(193) 8^log_2(194) 8^log_2(195) 8^log_2(196) 8^log_2(197) 8^log_2(314) 8^log_2(315) 8^log_2(316) 8^log_2(317) 8^log_2(319) 8^log_2(341) 8^log_2(345) 8^log_2(346) 8^log_2(347) 8^log_2(349) 8^log_2(351) 8^log_2(354) 8^log_2(356) 8^log_2(357) 8^log_2(359) 8^log_2(361) 8^log_2(364) 8^log_2(365) 8^log_2(367) 8^log_2(369) 8^log_2(371) 8^log_2(374) 8^log_2(375) 8^log_2(376) 8^log_2(379) 8^log_2(391) 8^log_2(394) 8^log_2(395) 8^log_2(396) 8^log_2(397) 8^log_2(413) 8^log_2(415) 8^log_2(416) 8^log_2(417) 8^log_2(419) 8^log_2(431) 8^log_2(435) 8^log_2(436) 8^log_2(437) 8^log_2(439) 8^log_2(451) 8^log_2(453) 8^log_2(456) 8^log_2(457) 8^log_2(459) 8^log_2(461) 8^log_2(463) 8^log_2(465) 8^log_2(467) 8^log_2(469) 8^log_2(471) 8^log_2(473) 8^log_2(475) 8^log_2(476) 8^log_2(479) 8^log_2(491) 8^log_2(493) 8^log_2(495) 8^log_2(496) 8^log_2(497) 8^log_2(513) 8^log_2(514) 8^log_2(516) 8^log_2(517) 8^log_2(519) 8^log_2(531) 8^log_2(534) 8^log_2(536) 8^log_2(537) 8^log_2(539) 8^log_2(541) 8^log_2(543) 8^log_2(546) 8^log_2(547) 8^log_2(549) 8^log_2(561) 8^log_2(563) 8^log_2(564) 8^log_2(567) 8^log_2(569) 8^log_2(571) 8^log_2(573) 8^log_2(574) 8^log_2(576) 8^log_2(579) 8^log_2(591) 8^log_2(593) 8^log_2(594) 8^log_2(596) 8^log_2(597) 8^log_2(613) 8^log_2(614) 8^log_2(615) 8^log_2(617) 8^log_2(619) 8^log_2(631) 8^log_2(634) 8^log_2(635) 8^log_2(637) 8^log_2(639) 8^log_2(641) 8^log_2(643) 8^log_2(645) 8^log_2(647) 8^log_2(649) 8^log_2(651) 8^log_2(653) 8^log_2(654) 8^log_2(657) 8^log_2(659) 8^log_2(671) 8^log_2(673) 8^log_2(674) 8^log_2(675) 8^log_2(679) 8^log_2(691) 8^log_2(693) 8^log_2(694) 8^log_2(695) 8^log_2(697) 8^log_2(713) 8^log_2(714) 8^log_2(715) 8^log_2(716) 8^log_2(719) 8^log_2(731) 8^log_2(734) 8^log_2(735) 8^log_2(736) 8^log_2(739) 8^log_2(741) 8^log_2(743) 8^log_2(745) 8^log_2(746) 8^log_2(749) 8^log_2(751) 8^log_2(753) 8^log_2(754) 8^log_2(756) 8^log_2(759) 8^log_2(761) 8^log_2(763) 8^log_2(764) 8^log_2(765) 8^log_2(769) 8^log_2(791) 8^log_2(793) 8^log_2(794) 8^log_2(795) 8^log_2(796) 8^log_2(913) 8^log_2(914) 8^log_2(915) 8^log_2(916) 8^log_2(917) 8^log_2(931) 8^log_2(934) 8^log_2(935) 8^log_2(936) 8^log_2(937) 8^log_2(941) 8^log_2(943) 8^log_2(945) 8^log_2(946) 8^log_2(947) 8^log_2(951) 8^log_2(953) 8^log_2(954) 8^log_2(956) 8^log_2(957) 8^log_2(961) 8^log_2(963) 8^log_2(964) 8^log_2(965) 8^log_2(967) 8^log_2(971) 8^log_2(973) 8^log_2(974) 8^log_2(975) 8^log_2(976) 8^log_3(729) 8^log_4(169) 8^log_4(196) 8^log_4(256) 8^log_4(361) 8^log_4(529) 8^log_4(576) 8^log_4(625) 8^log_4(729) 8^log_4(961) 9^log_3(124) 9^log_3(125) 9^log_3(126) 9^log_3(127) 9^log_3(128) 9^log_3(142) 9^log_3(145) 9^log_3(146) 9^log_3(147) 9^log_3(148) 9^log_3(152) 9^log_3(154) 9^log_3(156) 9^log_3(157) 9^log_3(158) 9^log_3(162) 9^log_3(164) 9^log_3(165) 9^log_3(167) 9^log_3(168) 9^log_3(172) 9^log_3(174) 9^log_3(175) 9^log_3(176) 9^log_3(178) 9^log_3(182) 9^log_3(184) 9^log_3(185) 9^log_3(186) 9^log_3(187) 9^log_3(214) 9^log_3(215) 9^log_3(216) 9^log_3(217) 9^log_3(218) 9^log_3(241) 9^log_3(245) 9^log_3(246) 9^log_3(247) 9^log_3(248) 9^log_3(251) 9^log_3(254) 9^log_3(256) 9^log_3(257) 9^log_3(258) 9^log_3(261) 9^log_3(264) 9^log_3(265) 9^log_3(267) 9^log_3(268) 9^log_3(271) 9^log_3(274) 9^log_3(275) 9^log_3(276) 9^log_3(278) 9^log_3(281) 9^log_3(284) 9^log_3(285) 9^log_3(286) 9^log_3(287) 9^log_3(412) 9^log_3(415) 9^log_3(416) 9^log_3(417) 9^log_3(418) 9^log_3(421) 9^log_3(425) 9^log_3(426) 9^log_3(427) 9^log_3(428) 9^log_3(451) 9^log_3(452) 9^log_3(456) 9^log_3(457) 9^log_3(458) 9^log_3(461) 9^log_3(462) 9^log_3(465) 9^log_3(467) 9^log_3(468) 9^log_3(471) 9^log_3(472) 9^log_3(475) 9^log_3(476) 9^log_3(478) 9^log_3(481) 9^log_3(482) 9^log_3(485) 9^log_3(486) 9^log_3(487) 9^log_3(512) 9^log_3(514) 9^log_3(516) 9^log_3(517) 9^log_3(518) 9^log_3(521) 9^log_3(524) 9^log_3(526) 9^log_3(527) 9^log_3(528) 9^log_3(541) 9^log_3(542) 9^log_3(546) 9^log_3(547) 9^log_3(548) 9^log_3(561) 9^log_3(562) 9^log_3(564) 9^log_3(567) 9^log_3(568) 9^log_3(571) 9^log_3(572) 9^log_3(574) 9^log_3(576) 9^log_3(578) 9^log_3(581) 9^log_3(582) 9^log_3(584) 9^log_3(586) 9^log_3(587) 9^log_3(612) 9^log_3(614) 9^log_3(615) 9^log_3(617) 9^log_3(618) 9^log_3(621) 9^log_3(624) 9^log_3(625) 9^log_3(627) 9^log_3(628) 9^log_3(641) 9^log_3(642) 9^log_3(645) 9^log_3(647) 9^log_3(648) 9^log_3(651) 9^log_3(652) 9^log_3(654) 9^log_3(657) 9^log_3(658) 9^log_3(671) 9^log_3(672) 9^log_3(674) 9^log_3(675) 9^log_3(678) 9^log_3(681) 9^log_3(682) 9^log_3(684) 9^log_3(685) 9^log_3(687) 9^log_3(712) 9^log_3(714) 9^log_3(715) 9^log_3(716) 9^log_3(718) 9^log_3(721) 9^log_3(724) 9^log_3(725) 9^log_3(726) 9^log_3(728) 9^log_3(741) 9^log_3(742) 9^log_3(745) 9^log_3(746) 9^log_3(748) 9^log_3(751) 9^log_3(752) 9^log_3(754) 9^log_3(756) 9^log_3(758) 9^log_3(761) 9^log_3(762) 9^log_3(764) 9^log_3(765) 9^log_3(768) 9^log_3(781) 9^log_3(782) 9^log_3(784) 9^log_3(785) 9^log_3(786) 9^log_3(812) 9^log_3(814) 9^log_3(815) 9^log_3(816) 9^log_3(817) 9^log_3(821) 9^log_3(824) 9^log_3(825) 9^log_3(826) 9^log_3(827) 9^log_3(841) 9^log_3(842) 9^log_3(845) 9^log_3(846) 9^log_3(847) 9^log_3(851) 9^log_3(852) 9^log_3(854) 9^log_3(856) 9^log_3(857) 9^log_3(861) 9^log_3(862) 9^log_3(864) 9^log_3(865) 9^log_3(867) 9^log_3(871) 9^log_3(872) 9^log_3(874) 9^log_3(875) 9^log_3(876) 9^log_4(128) 9^log_4(256) 9^log_4(512) 9^log_8(512)
666行分のデータです。 aについて、
a 個数 2 5 3 7 4 215 5 1 6 2 7 2 8 220 9 214
bについて、
a^log_bについて
a^log_b 個数 4^log_2 210 8^log_2 210 4^log_3 1 5^log_3 1 6^log_3 1 8^log_3 1 9^log_3 210 2^log_4 5 3^log_4 1 7^log_4 1 8^log_4 9 9^log_4 3 3^log_8 1 4^log_8 4 6^log_8 1 7^log_8 1 9^log_8 1 3^log_9 5
4^log_2, 8^log_2, 9^log_3は汎用型で、いずれの個数も210個で合計630個 その他は合計36個 cde=n^2型について
n cde=n^2 個数 13 169 48 14 196 48 16 256 72 17 289 0 18 324 0 19 361 48 23 529 12 24 576 72 25 625 36 27 729 72 28 784 24 29 841 24 31 961 48 n^2型 504 その他 162
cde=n^3型について
n cde=n^3 個数 5 125 24 6 216 24 8 512 84 9 729 72 n^3型 204 その他 462
cde=2^m型について
m cde=2^m型 個数 7 128 24 8 256 72 9 512 84 2^m型 180 その他 486
cde=3^m型について
m cde=3^m型 個数 5 243 0 6 729 72 3^m型 72 その他 594
a^log_bとcdeで表を作りたかったが、アメブロ4万文字制限のため、まだまだ続きます。 ではでは