小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。
并且小Q对于能否被3整除这个性质很感兴趣。
小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。
小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。
并且小Q对于能否被3整除这个性质很感兴趣。
小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。
输入包括两个整数l和r(1 <= l <= r <= 1e9), 表示要求解的区间两端。
输出一个整数, 表示区间内能被3整除的数字个数。
2 5
3
12, 123, 1234, 12345...
其中12, 123, 12345能被3整除。
//计算指定数列能被3整除数的个数var calNum=function(num) {
//对于1,12,123,1234,12345,123456......1234567891011
// 011 011 011 011 发现没3个数字为一个循环,每个循环有2个能被3整除
//题目说的是第l到第r,所以是从1开始的,而不是0开始
var line = readline().split(' ');
var l = parseInt(line[0]);
var r = parseInt(line[1]);
//代入右端点,求得的是定死右端点时,能被3整除的最多个数,包括右端点,所以下面是l-1
function isThree(r) {
var res = 0;
if (r % 3 != 0) {
//这里r/3就是求得有多少个循环.2是每个循环有2个能被3整除
//不能被3整除,可以把余数理解为是最后一个不完全循环中的数字的个数,
//那么-1就是因为循环中的第一个数字是0,代表不能被3整除
res = Math.floor(r / 3) * 2 + (r % 3 - 1);
} else { //能被3整除
res = Math.floor(r / 3) * 2;
}
return res;
}
//之所以要减去isThree(i-1),是因为左端点还没固定
console.log(isThree(r) - isThree(l - 1));
var line = readline().split(' ');
var left = parseInt(line[0]);
var right = parseInt(line[1]);
var count = 0;
var newcount = 0;
if((left-1)%3!=0){
count = Math.floor((left-1)/3)*2+(left-1)%3-1;
}else{
count = Math.floor((left-1)/3)*2;
}
if(right%3==0){
newcount = Math.floor(right/3)*2;
}else{
newcount = Math.floor(right/3)*2+(right%3-1);
}
print(newcount-count);
#只过60%,求问哪里错了 s = input().split() l = int(s[0]) r = int(s[1]) def isOk(n): if n == 1: return 0 if n == 2: return 1 ter = 0 if l%3 != 1: ter = 1 print((r//3)*2 + isOk(r%3) - (l//3)*2 - isOk(l%3) + ter)
#include<stdio.h>
int main(){
int l, r;
scanf("%d%d", &l, &r);
int count = 0;
//从1开始,每3个数为1个循环,011, 011, ...
if(l%3 == 1){
count = count + (r-l+1)/3 * 2;
}
else if(l%3 == 2){
count = count + (r-l-1)/3 * 2 + 2;
// count = count + (r-(l+2)+1)/3 * 2 + ((r-(l+2)+1)%3 - 1) + 2;
}
else{
count = count + (r-l)/3 * 2 + 1;
}
if((r%3 == 1) || (r%3 == 2)) count += r%3 - 1;
//处理最后超出的部分
printf("%d\n", count);
return 0;
}
var line = readline().split(' ');
var l = parseInt(line[0]);
var r = parseInt(line[1]);
function divisibleByThree(l, r) {
if (!(l >= 1 && r >= 1 && l <= 1e9 && r <= 1e9 && l <= r)) {
return 0;
}
var count = 0;
var temp1 = Math.floor((r - l + 1) / 3);
var temp2 = (r - l + 1) % 3;
var temp3 = l % 3;
count += temp1 * 2;
if (temp2 === 2) {
if (temp3 === 2) {
count = count + 2;
} else {
count = count + 1;
}
} else if (temp2 === 1) {
if (temp3 === 2) {
count++;
}
}
return count;
}
console.log(divisibleByThree(l, r));