Problem


alt


Solution


首先a或者b等于target的时候,肯定是不需要操作的,直接输出0.
接下来,如果target为奇数,是无论如何都达不到target的,因为只要进行一次操作,a和b必定为偶数,所以输出-1.
当a+b等于target的时候,只需要一次操作,大于的时候需要两次,所以就看多少次操作能让a+b>=target。


Code


#include <algorithm>
#include <cstring>

using namespace std;
typedef long long ll;

int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        ll a, b, target;
        cin >> a >> b >> target;

        if (a == target || b == target) cout << 0 << endl;
        else if (target % 2 != 0) cout << -1 << endl;
        else
        {
            int res = 0;
            while( a != target && b != target)
	        {
		        res ++;
		        if( 2 *(a + b) < target) 
		        {
			        a *= 2;
			        b *= 2; 
		        }
		        else
		        {
			        break;
		        }
	        }
            cout << res << endl;
        }

    }
    return 0;
}