知恵袋の桁数の問題をPythonで解いてみた。

 知恵袋の桁数の問題Pythonで解いてみました。(^_^;

〈桁数と最高位の数字,一の位の数字〉
 A=12^{60}とする。
(1)Aの一の位の数字を答えよ。
(2)Aは何桁の整数か。
(3)また,Aの最高位の数字を求めよ。
ただし,\log_{10}2=0.3010, \log_{10}3=0.4771とする。

 ただし、(2)を、(2)と(3)に分けました。(^_^;
 ちなみに、(3)は、数学的には常用対数の小数部分から求めます。具体的には、下記の表と大小比較して求めます。

lg(2) = 0.301029995663981
lg(3) = 0.477121254719662
lg(4) = 0.602059991327962 = 2*lg(2)
lg(5) = 0.698970004336019 = 1-lg(2)
lg(6) = 0.778151250383644 = lg(2)+lg(3)
lg(7) = 0.845098040014257
lg(8) = 0.903089986991944 = 3*lg(2)
lg(9) = 0.954242509439325 = 2*lg(3)
ただし、\lg(x) = \log_{10} x

※参考URL
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13131389183

● Digit1.py

# coding: UTF-8
# Digit1.py

def main():
    from time import time
    tm=time()  # Timer Start
    a = 12**60
    print("A = %d"%a)
    print( "(1) %d"%(a%10))
    n = len(str(a)) # int(log10(a))+1
    print(u"(2) %d 桁"%n)
    print( "(3) %d"%(a//10**(n-1)))
    tm=time()-tm  # Timer Stop
    print("Runtime : %.3f [sec]"%tm)

if __name__ == '__main__':
    main()

●実行結果

A = 56347514353166785389812313795980500551139163800306781874894667776
(1) 6
(2) 65 桁
(3) 5
Runtime : 0.000 [sec]