题目:
分析:
看到式子,推一推其实就是(y+x)*(y-x)=n,显然可以根号n的枚举,判断一下合不合法直接出结果,然后就是代码。注意x!=0.
#include <cstdio> #include <string> using namespace std; int main(){ int t; scanf("%d",&t); for(int i=1;i<=t;i++){ int n; scanf("%d",&n); int ans=1e9; for(int i=1;i*i<n;i++){ if(n%i||(i+n/i)%2) continue; ans=min(ans,(n/i-i)/2); } printf("%d\n",ans>=1e9-1?-1:ans); } return 0; }