Skip to main content

fast_pow

Function fast_pow 

Source
pub fn fast_pow(a: u64, n: u32) -> Option<u64>
Expand description

a ning n -darajasi — tez darajaga ko’tarish (binary exponentiation).

G’oya: a⁸ = ((a²)²)². Darajani ikkilik sanoq sistemasida ko’rib, har qadamda asosni kvadratga ko’taramiz va kerakli bitlarda javobga ko’paytiramiz.

  • Time: O(log n) — a⁶⁴ uchun 64 ta emas, atigi 7 ta ko’paytirish!
  • Overflow bo’lsa None qaytadi.

§Misol

use rust_algorithms::numbers::fast_pow;

assert_eq!(fast_pow(2, 10), Some(1024));
assert_eq!(fast_pow(3, 0), Some(1));
assert_eq!(fast_pow(u64::MAX, 2), None); // overflow