P9783 [ROIR 2020 Day1] 平方-题解
_little_Cabbage_ · · 题解
P9783 [ROIR 2020 Day1] 平方题解
这题还是比较水的。
首先我们要知道,两个数的平方差
也就是说,题面中的
- 如果
n 为奇数就拆成n\times m 。 - 否则
x 就等于n/2 。 - 如果
x 也为奇数那么就无解。 - 否则输出
(x+2)/2 and(x-2)/2 。
注意要特判
代码:
#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;
}