第三题
 func solution3(_ nums: [Int]) -> Int { let N = nums.count let K = mypow(N) - 1 let mod = Int(1e9+7) var sum = 0 for num in nums { sum = (sum + num) % mod } let inverseN = modInverse(N, mod) let result = (K * sum % mod) * inverseN % mod return result } func mypow(_ n: Int) -> Int { var _n = n var a = 2 var res = 1 let mod = Int(1e9+7) while _n > 0 { if _n % 2 == 1 { res = (res * a) % mod } a = (a * a) % mod _n /= 2 } return res } func modInverse(_ a: Int, _ m: Int) -> Int { var m0 = m var a0 = a var m1 = m var x0 = 0 var x1 = 1 while a0 > 1 { let q = a0 / m0 var t = m0 m0 = a0 % m0 a0 = t t = x0 x0 = x1 - q * x0 x1 = t } if x1 < 0 { x1 += m1 } return x1 }
点赞 评论

相关推荐

昨天 23:26
河南大学 Java
双非本,刚学完Redis,项目只有外卖和点评,八股没准备,算法只有lqb省一,感觉敲的项目也是一言难尽没怎么吸收。怎么你们都有实习了
大牛之途:27急个锤子,你投日常实习最好的时间就是9,10月份,那时候暑期实习都结束了,正是缺人的时候。这份日常又能给你的暑期实习增加竞争力,暑期找的好了秋招也不怕了,都是环环相扣的
点赞 评论 收藏
分享
牛客网
牛客企业服务