Codility - CountDiv JavaScript解决方案

时间:2015-09-23 08:27:21

标签: javascript

我仍然对JavaScript有点新意,所以如果有人想解释如何解决这个小问题。

基本上,我使用不同的语言来解决训练课程。我在使用java脚本浮点时遇到了小问题。这是我的意思的例子。相关任务位于第3课task one: CountDiv

在Java中,我的解决方案完美无缺,得分为100/100。这是代码:

class Solution {
    public int solution(int A, int B, int K) {

        int offset = A % K ==0?1:0;

        return (B/K) - (A/K) + offset;

    }
}

用java脚本编写的代码75/100。

function solution(A, B, K) {
   var offset;

   if (A % K === 0) {
       offset=1;
   } else {
       offset=0;
   }

   var result =(B/K) - (A/K) + offset;

   return parseInt(result);
}

JavaScript解决方案在以下测试中失败: A = 11,B = 345,K = 17 (返回19,期望20)

我假设它与JavaScript如何将浮点数转换为整数有关?

如果有人想解释如何正确编写JS解决方案?

由于

4 个答案:

答案 0 :(得分:6)

在分割结果上使用parseInt

当你使用除法运算符时,结果被强制转换为浮点数,使其整数使用parseInt。 (感谢@ahmacleod

function solution(A, B, K) {
    var offset = A % K === 0 ? 1 : 0;
    return parseInt(B / K) - parseInt(A / K) + offset;
}

答案 1 :(得分:3)

我的第一次尝试就是这样:

function solution(A, B, K) {
    return Math.floor(B / K) - Math.floor(A / K) + (A % K === 0 ? 1 : 0);
}

并且得分为100/100,因为有人提到parseInt也应该这样做。

答案 2 :(得分:0)

迅速100%

fortran_fixed-form.tmLanguage.json

答案 3 :(得分:0)

function solution(A, B, K) {
   return Math.floor(B / K) - Math.ceil(A / K) + 1;
}

得分100/100