题意:给一个w,然后分为n*m形式,n为奇数,m为偶数,问你是否有解,如果有解,输出的答案m尽可能小。
如果w是奇数肯定无解,因为偶数*奇数只能得到偶数。
当w为偶数时,根据唯一分解定理,它的偶数质因子只有2,我们只要找到2的个数,然后全给m,剩下的全给n即可。
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long ll;
int main()
{
int t,cas=1;scanf("%d",&t);
while(t--)
{
ll w;
cin>>w;
if(w%2==1)
printf("Case %d: Impossible\n",cas++);
else
{
ll m=1;
while(w%2==0)
{
w=w/2;m=m*2;
}
printf("Case %d: %lld %lld\n",cas++,w,m);
}
}
return 0;
}