XのN乗を考えたとき、Xの桁数nがNと同じになるような、ものはいくつあるかという問題。
- digits-of-pow
xのn乗数の桁数を返す。
- pe63
xを1から9の数として、それぞれのxについて、1以上の整数nについて桁数を調べる。
forじゃなくてmapにしたほうがらしかったかな。
最初、なんのことかよくわからなかった。
1の場合は、
1^1 =1、1^2=1、1^3=1 .... となって1^1だけ。
2の場合は、
2^1 =1、 2^2=4 、 2^3=8 ... となってこれも2^1だけ。
おやー。 で、昼休みが終り。
次の日、あっと思って、基数を動かして書いてみた。
1^1=1、2^1=1、3^1=3、.... 9^1=9、10^1=10 ... となって、1から9。
1^2=2、2^2=4、3^2=9、4^2=16、5^2=25、.... 9^2=81、10^2=100 ... となって、4から9。
考えてみれば、Xが10のとき、10^nは、かならずn+1桁になってしまうので、Xは1桁の数でしかありえない。
この先を手で計算してもできそうだったけど、プログラムにしてみた。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; Problem 63 : 2011/11/17 | |
;; "Elapsed time: 1.326705 msecs" | |
(require '[clojure.contrib.math :as math]) | |
(defn digits-of-pow [x n] | |
(count (str (math/expt x n)))) | |
(defn pe63 [] | |
(for [x (range 1 10)] | |
(count | |
(take-while #(= (first %) (last %)) | |
(map #(vector % (digits-of-pow x %)) (iterate inc 1)))))) |
- digits-of-pow
xのn乗数の桁数を返す。
- pe63
xを1から9の数として、それぞれのxについて、1以上の整数nについて桁数を調べる。
forじゃなくてmapにしたほうがらしかったかな。
0 コメント:
コメントを投稿