P9783 [ROIR 2020 Day1] 平方-题解

· · 题解

P9783 [ROIR 2020 Day1] 平方题解

这题还是比较水的。

首先我们要知道,两个数的平方差 x^2-y^2 是可以变成 (x+y)\times (x-y) 的,这就是平方差公式。

也就是说,题面中的 x^2-y^2=n 可以变成 (x+y)\times (x-y)=n^2 剩下的就好办了:

注意要特判 0、1、4。

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long n;
    scanf("%lld",&n);
    if(n==0)
    {
        printf("Yes\n1 1");
    }
    else if(n==1||n==4)
    {
        printf("No");
    }
    else if(n%2==1)
    {
        printf("Yes\n%lld %lld",(n+1)/2,(n-1)/2);
    }
    else
    {
        if((n/2)%2==1)
        {
            printf("No");
        }
        else
        {
            long long x=n/2;
            printf("Yes\n%lld %lld",(x+2)/2,(x-2)/2);
        }
    }
    return 0;
}