刚开始看T1的时候感觉信心满满,马上就推出来一个式子, A 2 − B 2 = C A^2-B^2=C A2−B2=C,然后就写搞了一个暴力搞到了30pts,接着想100pts,想到了把式子传化为 ( A + B ) ( A − B ) = C (A+B)(A-B)=C (A+B)(A−B)=C,但是发现没啥用就放弃了
结果讲到的时候发现
(
A
+
B
)
(
A
−
B
)
=
C
(A+B)(A-B)=C
(A+B)(A−B)=C中
A
,
B
同
奇
同
偶
A,B同奇同偶
A,B同奇同偶
然后就暴力枚举因数,然后把不是同奇数,同偶数的答案给删掉就好了
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int get(int x)
{
int ans=0;
for(int i=1;i*i<=x;i++)
{
if(i&1)ans+=x/i - x/(2*i) - (i-1)/2;
else ans+= x/(2*i) - (i-1)/2;
}
return ans;
}
int T;
int l,r;
signed main()
{
cin>>T;
while(T--)
{
cin>>l>>r;
cout<<get(r)-get(l-1)<<endl;
}
return 0;
}