Problem 99: 最大の指数


  • 本記事はProjectEulerの「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

問題 99. 最大の指数

原文 Problem 99: Largest exponential

問題の要約:ファイルから$b^e$のbとeのペアを読んで$b^e$が最大になるのは何番目か答えよ

例として以下のような大きな数の比較があげれらています。

\large 632382^{518061} > 519432^{525806} 

このような大きい数を扱うときには対数を使うのが常套手段ですね。以下の基本公式を使って比較します。今回は最大値のindexだけ分かれば良いのでnumpyのargmaxを使いました。

\large log_{10} b^e = e \times log_{10} b
import numpy as np
import math
from google.colab import files
uploaded = files.upload()
#---- base/exp pair from file
bePair = list(map(lambda l: l.strip().split(","),open("p099_base_exp.txt")))
print(bePair)
print(f"Answer: {np.argmax([int(en)*math.log10(int(bn)) for bn, en in bePair])+1}")

(開発環境:Google Colab)