題意:
[l,r]範圍內多少個數滿足 (x % b) % a != (x % a) % b。
思路:
打表找規律
小心數據範圍
代碼:
#include <bits/stdc++.h>
#define ll long long
#define Max 0x3f3f3f3f3f3f3f3f
using namespace std;
int cnt[1000000];
int main()
{
int a,b,t,q;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&a,&b,&q);
for(int i=1;i<=a*b;++i)
{
cnt[i]=cnt[i-1];
if(i%a%b!=i%b%a) cnt[i]++;
}
while(q--)
{
ll l,r;
scanf("%lld%lld",&l,&r);
ll ans=cnt[a*b]*(r/(a*b)-(l-1)/(a*b))+cnt[r%(a*b)]-cnt[(l-1)%(a*b)];
printf("%lld\n",ans);
}
}
return 0;
}