解题思路
这道题目比较简单,要将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; }