練習問題

繰り返し二乗法。

# -*- coding: utf-8 -*-
def pow(a, n):
  res = 1
  while n > 0:
    if n & 1: res = res * a
    a **= 2
    n >>= 1
  return res

print pow(2, 0)
print pow(2, 1)
print pow(2, 2)
print pow(2, 10)
print pow(2, 1024)
print pow(2, 1000007) # だいたい10秒ぐらい。
print 2 ** 1000007  # これも10秒ぐらいだった。

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-02-23 (木) 23:33:34