首页 > 试题广场 >

被3整除

[编程题]被3整除
  • 热度指数:2211 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。

并且小Q对于能否被3整除这个性质很感兴趣。

小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。


输入描述:
输入包括两个整数l和r(1 <= l <= r <= 1e9), 表示要求解的区间两端。


输出描述:
输出一个整数, 表示区间内能被3整除的数字个数。
示例1

输入

2 5

输出

3

说明

12, 123, 1234, 12345...
其中12, 123, 12345能被3整除。
//计算指定数列能被3整除数的个数
var calNum=function(num) {
if (num%3===0) {
return num/3*2;
}else{
//取被3整除后多余的个数
var rest=num%3-1;
return Math.floor(num/3)*2+rest;
}
};

(function() {
//输入区间
var input=readline().split(' ');
var start=parseInt(input[0]);
var end=parseInt(input[1]);
//var start=10,end=110;

//每3个数有两个能被3整除
//var count=calNum(end)-calNum(start);
//判断首位是否需要
var count=calNum(end)-(start%3==1? calNum(start): calNum(start)-1);
//console.log(count);
print(count);
})();
编辑于 2019-04-24 10:19:02 回复(0)
var line = readline().split(' ');
var l = parseInt(line[0]);
var r = parseInt(line[1]);
function f(l,r){
    var a = [];
    a[0] = 0;
    a[1]=1
    var k = 0;
    for(var i = 2;i<=r;i++){
        a[i] = a[i-1]+""+i;
    }
    for(var j = l;j<=r;j++){
        if(0===a[j]%3){
            k++;
        }
    }
    return k;
}
console.log(f(l,r))

求解答,这样写为什么错的
发表于 2018-07-02 20:46:42 回复(5)