小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));