大家好,我在执行任务时遇到了问题。这是此任务的正文:
我正在从事数学任务,但无法解决问题:(请帮助我实现“简单”计数器。
function count(s, pairs) {
return 0; // number
}
作为第一个参数,您将在字符串s中使用位掩码(只能包含1或0)。作为第二个参数,您将使用成对的数组(array,其中包含许多长度等于2的数组)。每对[q] [0]!==对[w] [0],每对[h] [0]是质数。
让我们定义数字N
N = (pairs[0][0] ** pairs[0][1]) *
(pairs[1][0] ** pairs[1][1]) *
(pairs[2][0] ** pairs[2][1]) * /*
..... */ *
(pairs[pairs.length - 1][0] ** pairs[pairs.length - 1][1])
您的任务是计算-存在多少这样的整数k(0 <= k <= N),其遵循下一个条件:如果s [j] =,(k + j和N)的最大公约数为1。 == 1并且,如果s [j] === 0,则(k + j和N)的最大公约数不是1。
请返回的不是实际数字,而是答案为mod 1000000007的数字。
// ... your solution
// answer - task solution
const result = answer % 1000000007;
return result;
这是我的代码,但无法通过测试用例:
module.exports = function count(s, pairs) {
let result = 0;
let N = 1;
s = s.split('');
const gcd = (x, y) => {
x = Math.abs(x);
y = Math.abs(y);
while(y) {
var t = y;
y = x % y;
x = t;
}
return x;
}
for (let i = 0; i < pairs.length; i++){
N *= (pairs[i][0] ** pairs[i][1]);
}
for (let k = 0; k <= N; k++){
for (let j = 0; j < s.length; j++){
if(s[j] == 1 && gcd(k + j, N) === 1){
result++;
} else if(s[j] == 0 && gcd(k + j, N) !== 1){
result++;
}
}
}
return result % 1000000007;
}