function solution3(nums) {
let N = nums.length;
let mod = Math.pow(10, 9) + 7;
let K = mypow(2, N, mod) - 1;
let sum = 0;
for (num of nums) {
sum = (sum + num) % mod;
}
let [inverseN, ano] = modInverse(N, mod);
let result = (K * sum % mod) * inverseN % mod;
return result;
}
function mypow(a, n, mod) {
let res = 1;
while (n > 0) {
if (n % 2 === 1) res = (res * a) % mod;
a = (a * a) % mod;
n = Math.floor(n / 2);
}
return res;
}
function modInverse(a, m) {
if (m === 0) {
return [1, 0];
}
let [x, y] = modInverse(m, a % m);
let t = y;
y = x - (Math.floor(a / m) * y);
x = t;
return [x, y];
}
console.log(solution3([1, 2, 3, 4, 6, 5]));
console