Pythonのお勉強 Part31at TECHPythonのお勉強 Part31 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト317:デフォルトの名無しさん 09/01/20 23:44:56 pow(n, pow(n, n), 10) 318:デフォルトの名無しさん 09/01/20 23:49:54 >>> pow(3,pow(3,3),10) 7 >>> pow(7,pow(7,7),10) 3 >>> pow(13,pow(13,13),10) 3L >>> pow(17,pow(17,17),10) 7L あってる? 319:デフォルトの名無しさん 09/01/21 00:35:03 あってるけど、 アルゴリズム的には n が大きいときの pow(n, n) が課題。 320:デフォルトの名無しさん 09/01/21 01:37:05 遅いって言っても、1000ぐらいまでなら一瞬で出るぞ >>> i=1 >>> while 1:print i,pow(i,i**i,10);i+=1 ... 1 1 2 6 3 7 4 6 5 5 6 6 7 3 8 6 9 9 10 0 11 1 12 6 13 3 14 6 ... ... ... 1197 7 1198 6 1199 9 1200 0 1201 1 321:317 09/01/21 01:57:21 nのべき乗の1の位が、ある周期で循環することを利用して指数を小さくしてみた。 # coding: utf8 def cycle(n): i = n*n % 10 lst = [i] while n != i: i = i*n % 10 lst.append(i) return lst def main(): cycles = [cycle(i) for i in xrange(10)] clen = [len(item) for item in cycles] for i in range(10): print i, cycles[i] print "" for n in xrange(1, 1000): cl = clen[n%10] nn = pow(n, cycles[n%10][n%cl]) nnn1 = pow(n, nn, 10) print n, nnn1 if __name__ == '__main__': main() 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch