3257. 「ROIR 2020 Day 1」平方差
Sol
比较水的一道题。
$(x+y)(x-y)=n^2$
x+y和x-y奇偶性要相同
若n为奇数 1*n成立 。
若n为偶数 x=n/2;
若x为奇数就是No (无法划分成奇偶性相同的两块)
若x为偶数就是Yes
注意判0 1 4即可。
![](https://i-blog.csdnimg.cn/blog_migrate/be072acd3a58dfb310f8ab6003559f78.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/839c1c4e3f0a7686595da1a8adcabad7.gif)
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
ll n;
int main(){
scanf("%lld",&n);
if(n==1||n==4){puts("No");return 0;}
if(n==0){puts("Yes\n1 1\n");return 0;}
if(n&1)printf("Yes\n%lld %lld\n",(n+1)>>1,((n+1)>>1)-1);
else {
n>>=1;
if(n%2==0){
ll x=(2+n)/2,y=x-2;
printf("Yes\n%lld %lld\n",x,y);
}
else puts("No");
}
return 0;
}