义乌集训Day11 T1

题目链接

刚开始看T1的时候感觉信心满满,马上就推出来一个式子, A 2 − B 2 = C A^2-B^2=C A2B2=C,然后就写搞了一个暴力搞到了30pts,接着想100pts,想到了把式子传化为 ( A + B ) ( A − B ) = C (A+B)(A-B)=C (A+B)(AB)=C,但是发现没啥用就放弃了

结果讲到的时候发现 ( A + B ) ( A − B ) = C (A+B)(A-B)=C (A+B)(AB)=C
A , B 同 奇 同 偶 A,B同奇同偶 A,B

然后就暴力枚举因数,然后把不是同奇数,同偶数的答案给删掉就好了

#include
#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;
 }

你可能感兴趣的:(比赛,数论,数论)