20 分求助!
查看原帖
20 分求助!
814343
bc2_cryeggy楼主2023/4/6 20:17

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define qwq ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
const int N = 66;
char c[N];
bool a[N];
long long l, r, times = 0;

signed main()
{
	qwq;
	int T;
	cin >> T;
	while (T --)
	{
		int n;
		long long k;
		cin >> n >> k;
		for (int i = 1; i <= n; ++ i)
		{
			cin >> c[i];
			a[i] = (c[i] == '1');
		}
		l = 1, r = (1 << n) - 1, times = 1;
		bool f = 0;
		while (l <= r)
		{
			long long mid = l + r >> 1;
			++ times;
			if (k > mid)
			{
				l = mid + 1;
				f = a[times - 1];
			}
			else if (k == mid)
			{
				if (f)
					cout << "Up" << endl;
				else
					cout << "Down" << endl;
				break;
			}
			else
			{
				r = mid - 1;
				f = !a[times - 1];
			}
		}
	}
	return 0;
}
2023/4/6 20:17
加载中...