File tree Expand file tree Collapse file tree 2 files changed +65
-0
lines changed Expand file tree Collapse file tree 2 files changed +65
-0
lines changed Original file line number Diff line number Diff line change @@ -232,6 +232,41 @@ public class Solution {
232232}
233233```
234234
235+ #### Swift
236+
237+ ``` swift
238+ class Solution {
239+ private let mod = 1000000007
240+
241+ func cuttingRope (_ n : Int ) -> Int {
242+ if n < 4 {
243+ return n - 1
244+ }
245+ if n % 3 == 0 {
246+ return qpow (3 , n / 3 )
247+ }
248+ if n % 3 == 1 {
249+ return (4 * qpow (3 , n / 3 - 1 )) % mod
250+ }
251+ return (2 * qpow (3 , n / 3 )) % mod
252+ }
253+
254+ private func qpow (_ a : Int , _ n : Int ) -> Int {
255+ var a = a
256+ var n = n
257+ var ans: Int = 1
258+ while n > 0 {
259+ if (n & 1 ) == 1 {
260+ ans = (ans * a) % mod
261+ }
262+ a = (a * a) % mod
263+ n >>= 1
264+ }
265+ return ans
266+ }
267+ }
268+ ```
269+
235270<!-- tabs: end -->
236271
237272<!-- solution: end -->
Original file line number Diff line number Diff line change 1+ class Solution {
2+ private let mod = 1000000007
3+
4+ func cuttingRope( _ n: Int ) -> Int {
5+ if n < 4 {
6+ return n - 1
7+ }
8+ if n % 3 == 0 {
9+ return qpow ( 3 , n / 3 )
10+ }
11+ if n % 3 == 1 {
12+ return ( 4 * qpow( 3 , n / 3 - 1 ) ) % mod
13+ }
14+ return ( 2 * qpow( 3 , n / 3 ) ) % mod
15+ }
16+
17+ private func qpow( _ a: Int , _ n: Int ) -> Int {
18+ var a = a
19+ var n = n
20+ var ans : Int = 1
21+ while n > 0 {
22+ if ( n & 1 ) == 1 {
23+ ans = ( ans * a) % mod
24+ }
25+ a = ( a * a) % mod
26+ n >>= 1
27+ }
28+ return ans
29+ }
30+ }
You can’t perform that action at this time.
0 commit comments