思路:找到规律,模3取余 1 0 0 1 0 0 1 0 0…(1不能被3整除,0能被3整除)
例1 0 0 1 0 0.1 0 0 。 。 。 。
a b
此时a=1,b=7,整除的个数为7-1-(7-1)/3个
a和b同时都在模3取余为1的位置上其有b-a-(b-a)/3个可以被3整除,
后面代码中利用sum计数,将a和b都移到最近的模3取余为1的位置上
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
int a,b;
int num = 1;
while(t--)
{
cin>>a>>b;
int sum = 0;
if(a%3!=1)
{
if(a%3==2)
{
sum+=2;
a+=2;
}
else
{
sum++;
a++;
}
}
if(b%3!=1)
{
if(b%3==2)
{
sum++;
b--;
}
else
{
sum+=2;
b-=2;
}
}
cout<<"Case "<<num++<<": "<<sum+b-a-(b-a)/3<<endl;
}
return 0;
}