読者です 読者をやめる 読者になる 読者になる

PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 99 / 最大のべき乗

指数の形で表される2つの数,たとえば 2^11と3^7の大小を調べることは難しくはない。電卓を使えば 2^11 = 2048 < 3^7 = 2187 であることが確かめられる。

しかし, 632382^518061 > 519432^525806 を確認することは非常に難しい(両者ともに300万桁以上になる)。

各行に1組が書かれている1000個の組を含んだ22Kのテキストファイル
base_exp.txt から最大の数が書かれている行の番号を求めよ。

(注)ファイル中の最初の2行は上の例である。

Problem 99 - Project Euler


Log をとって考えます。与えられたデータは

519432,525806
632382,518061

のように底と指数が並んでいるので n 個目の項を a[n] として
 b_n =\log (a_{2n-1})^{a_{2n} }=a_{2n} \log a_{2n-1}
の Max の登場位置を Position で調べました。