P9231 [蓝桥杯 2023 省 A] 平方差--2024蓝桥杯冲刺省一

点击跳转例题

思路:
推式子,得到 x=(y−z)×(y+z), 记:y-z=a,y+z=b,所以a+b==2y,所以a+b奇偶同性。
得出结论:x 分解质因数后,要么没有质因数 2,要么至少有两个质因数 2。
观察样例:如果是奇数,直接拆成 1和它本身即可。所以为(x+1)/2
如果是偶数,因为要拆成 2 个偶数,所以应是 4 的倍数。所以为:x/4;

代码:
 

#include 
#define int long long //(有超时风险)
#define PII pair
#define endl '\n'
#define LL __int128

using namespace std;

const int N=2e5+10,M=1e3+10,mod=998244353,INF=0x3f3f3f3f;

int odd(int x)
{
    return (x+1)/2;
}

int even(int x)
{
    return x/4;
}

signed main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int l,r;cin>>l>>r;
    int ans=(odd(r)-odd(l-1))+(even(r)-even(l-1));
    cout<

你可能感兴趣的:(数学,蓝桥杯,职场和发展,c++)