AcWing_4996 平方差(找规律)

AcWing

4996. 平方差

不难发现,满足题意的x的个数,即区间中 奇数的个数 和 被4整除的数的个数 之和。

$O(1)$.

#include <bits/stdc++.h>
using namespace std;
int main(){
    int l, r;
    cin >> l >> r;
    int res = 0;
    int ll = l, rr = r;
    while(ll <= rr){
        if(ll % 2 && rr % 2) break;
        if(ll % 2 == 0) ll ++;
        if(rr % 2 == 0) rr --;
    }
    if(ll <= rr && ll % 2 && rr % 2) res += (rr - ll) / 2 + 1;
    ll = l, rr = r;
    while(ll <= rr){
        if(!(ll % 4) && !(rr % 4)) break;
        if(ll % 4 != 0) ll ++;
        if(rr % 4 != 0) rr --;
    }
    if(ll <= rr && !(ll % 4) && !(rr % 4)) res += (rr - ll) / 4 + 1;
    cout << res;
    return 0;
}