diff --git "a/lcof/\351\235\242\350\257\225\351\242\23016. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271/README.md" "b/lcof/\351\235\242\350\257\225\351\242\23016. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271/README.md" index 1808d49592873..b57a8ca41dfa1 100644 --- "a/lcof/\351\235\242\350\257\225\351\242\23016. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271/README.md" +++ "b/lcof/\351\235\242\350\257\225\351\242\23016. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271/README.md" @@ -237,6 +237,32 @@ public class Solution { } ``` +#### Swift + +```swift +class Solution { + func myPow(_ x: Double, _ n: Int) -> Double { + return n >= 0 ? qpow(x, Int64(n)) : 1 / qpow(x, -Int64(n)) + } + + private func qpow(_ a: Double, _ n: Int64) -> Double { + var ans: Double = 1 + var base: Double = a + var exponent: Int64 = n + + while exponent > 0 { + if (exponent & 1) == 1 { + ans *= base + } + base *= base + exponent >>= 1 + } + + return ans + } +} +``` + diff --git "a/lcof/\351\235\242\350\257\225\351\242\23016. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271/Solution.swift" "b/lcof/\351\235\242\350\257\225\351\242\23016. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271/Solution.swift" new file mode 100644 index 0000000000000..da8c8e9ca3eca --- /dev/null +++ "b/lcof/\351\235\242\350\257\225\351\242\23016. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271/Solution.swift" @@ -0,0 +1,21 @@ +class Solution { + func myPow(_ x: Double, _ n: Int) -> Double { + return n >= 0 ? qpow(x, Int64(n)) : 1 / qpow(x, -Int64(n)) + } + + private func qpow(_ a: Double, _ n: Int64) -> Double { + var ans: Double = 1 + var base: Double = a + var exponent: Int64 = n + + while exponent > 0 { + if (exponent & 1) == 1 { + ans *= base + } + base *= base + exponent >>= 1 + } + + return ans + } +} \ No newline at end of file