1 条题解

  • 0
    @ 2025-10-12 19:07:39

    平方差表示问题

    考虑哪些数字可以作为两个不同正整数的平方差:

    • 1 不能被表示;
    • 形如 2k+12k+1k>0k>0)的奇数可以表示为 (k+1)2k2(k+1)^2 - k^2
    • 形如 4k+24k+2k0k \geq 0)的偶数都不能被表示;
    • 4 不能被表示;
    • 形如 4k4kk2k \geq 2)的偶数可以表示为 (k+1)2(k1)2(k+1)^2 - (k-1)^2

    综上所述,记 d=a2b2d = |a^2 - b^2|,其表示方法数为:

    $$\left\lfloor \frac{d-1}{2} \right\rfloor + \max\left( \left\lfloor \frac{d}{4} \right\rfloor - 1,\ 0 \right) $$
    #include<iostream>
    using namespace std;
    int main() {
        int t;
        scanf("%d", &t);
        for(int i = 1; i <= t; i++) {
            long long a, b;
            scanf("%lld%lld", &a, &b);
            long long d = abs(a * a - b * b);
            printf("%lld\n", (d - 1) / 2 + max(d / 4 - 1, (long long)0));
        }
        return 0;
    }
    
    
    
    • 1

    信息

    ID
    490
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    68
    已通过
    8
    上传者