京东编程题-奇数和偶数解

解题思路

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

  

 

posted on 2018-04-09 21:02  Tracy-mac  阅读(350)  评论(0编辑  收藏  举报

导航