关注
第三题
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
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
06-06 15:43
黑龙江外国语学院 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 聊聊这家公司值得去吗 #
231752次浏览 2180人参与
# 职场人,说说你的烦心事 #
8383次浏览 70人参与
# 你认为哪个岗位找工作最卷 #
11201次浏览 39人参与
# kpi面有什么特征 #
31126次浏览 201人参与
# 一人一个landing小技巧 #
78559次浏览 1120人参与
# 职场上哪些事情令人讨厌 #
16592次浏览 82人参与
# 秋招最大的收获是什么? #
33805次浏览 296人参与
# 职场吐槽大会 #
205125次浏览 1635人参与
# 大家每天通勤多久? #
41913次浏览 329人参与
# 为了找工作你投递了多少公司? #
8873次浏览 120人参与
# 小红书求职进展汇总 #
56041次浏览 483人参与
# 职场破防瞬间 #
234838次浏览 2125人参与
# 通信硬件牛牛的实习日记 #
7127次浏览 65人参与
# 总结:哪家公司面试体验感最好 #
47544次浏览 336人参与
# 找工作前vs找工作后的心路变化 #
9555次浏览 102人参与
# tplink提前批进度交流 #
162644次浏览 1378人参与
# 机械制造岗投递时间线 #
22672次浏览 345人参与
# 研究所VS国企,该如何选 #
180522次浏览 1768人参与
# 考公还是考研,你怎么选? #
26503次浏览 135人参与
# 硬件人你反向读研了吗 #
41732次浏览 630人参与