#include<iostream>#include<math.h>using
namespace std;
int
main()
{ int
t,n;
int
a,b;
int
p,q,flag;
cin>>t;
while(t--)
{
flag=0;
cin>>n;
for(p=int(sqrt(1.0*n));p>=1;p--)
{
q=n/p;
if(n%p==0&&(p+q)%2==0)
{
if((p+q)/2>(q-p)/2)
{
a=(p+q)/2;
b=(q-p)/2;
flag++;
break;
}
}
}
if(flag==0)
cout<<"IMPOSSIBLE"<<endl;
else
cout<<b<<" "<<a<<endl;
}
return
0;
}
本文介绍了一个C++程序,用于寻找特定条件下整数a和b,使得输入的整数n能够被表示为(a+b)*(a-b)的形式。通过迭代计算,程序能够有效地找到满足条件的a和b,或者输出'IMPOSSIBLE'表示不存在这样的解。
341

被折叠的 条评论
为什么被折叠?



