
解题思路
这道题目比较简单,要将N拆成一个奇数和一个偶数的乘积。如果N是奇数,显然没有解,如果N是偶数,显然有解,至少有1 * N 这组解。
题目要求的是有解情况下偶数最小的那组解,所以只需将N中所有的2都给这个偶数就可以啦。
代码
#include <iostream>
using namespace std;
int main()
{
int num;
cin >> num;
for(int i = 1;i <= num;i++)
{
long long t;
cin >> t;
if(t % 2 != 0) cout << "No" << endl;
else
{
long long a = 0,b = 1;
while(true)
{
if(t % 2 == 0)
{
b *= 2;
t /= 2;
}
else
{
a = t;
break;
}
}
cout << a << " " << b << endl;
}
}
return 0;
}