SuperCon '95 予選課題 自 然 対 数 の 計 算 〔課題〕 以下では,底を e とする x の対数(x の自然対数)を log_e(x) と書くことにす る.log_e(2)(底を e とする 2 の自然対数)を,小数点以下 3000 桁まで正確に 求めて,十進数で出力するプログラムを作成せよ. 〔出力の形式〕 答えは標準出力ファイルに,整数部分から 0.69314...のように出力し,小 数点以下 3000 桁まで,すべて 1 行に出力することにする.途中にコンマや空白 を入れないように.とくに途中の 0 が空白にならないように注意すること. 〔審査方法〕 予選審査は,(1) 結果の正確さ,(2) 計算速度の速さ,(3) 解説の明確さ(わかり やすさ),(4) アイデアのおもしろさ,などを総合的にみて評価する. 〔ヒント〕 (1) 任意の x(ただし -1 < x < 1)に対して,次の等式が成立する(右辺は絶対収 束級数). n ∞ n-1 x log_e(1+x) = Σ (-1) -------- n=1 n (2) 任意の自然数 M は,適当な数の有理数の組 (p1,q1), ..., (pL,qL)(ただし 0 < qi < 2, pi != 0)を用いて, L log_e(M) = Σ pi * log_e(qi) n=1 と表示できる.また,この分解の方法は無数に存在する.たとえば,log_e(5) は,以下のように分解できる. log_e(5) = -log_e(1/5) = 5log_e(125/128) - 7log_e(25/32) = 2log_e(125/108) +(1/2) log_e(625/576) -7log_e(5/6) (3) log_e(2) についての参考データ 小数点以下 1 桁から 15 桁まで: 693147180559945