Codeforces Yet Another Counting Problem(数学)

Codeforces Yet Another Counting Problem(数学)_第1张图片
题意:
[l,r]范围内多少个数满足 (x % b) % a != (x % a) % b。

思路:
打表找规律
小心数据范围

代码:

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

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