题意
给出一个W,要求N*M=W,且N是奇数,M是偶数。求出N和M的值,要求M的值尽可能少
思路
把2因子全部分离出来
代码
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
ll w;
void solve () {
if ( w % 2 )
printf ( "Impossible\n" );
else {
ll ans = 1;
while ( !( w % 2 ) ) {
w >>= 1;
ans <<= 1;
}
printf ( "%lld %lld\n", w, ans );
}
}
int main () {
int T;
scanf ( "%d", &T );
for ( int ks = 1; ks <= T; ++ks ) {
scanf ( "%lld", &w );
printf ( "Case %d: ", ks );
solve ();
}
return 0;
}