1 条题解

  • 0
    @ 2026-4-5 11:14:11

    当 n≤2n \le 2 时无解。

    依次询问所有某一位为 11 而其他位为 00 的 01 串:

    • 如果结果都是 11,那么 SS 是全 00 串。
    • 如果结果都相等但不是 11,那么 SS 是全 11 串。
    • 如果结果不全相等,结果小的表明那一位为 11,大的表明那一位为 00。
    #include <bits/stdc++.h>
    #include "binary.h"
    using namespace std;
    long long ans[22];
    int main()
    {
    	int T = init();
    	while (T--)
    	{
    		int n = start();
    		if (n <= 2)
    		{
    			reject();
    			continue;
    		}
    		string S = "";
    		for (int i = 1; i <= n; i++)
    			S += "0";
    		string T = S;
    		for (int i = 0; i <= n - 1; i++)
    		{
    			T[i] = '1';
    			ans[i] = interact(T);
    			T[i] = '0';
    		}
    		bool ok = true;
    		long long p1 = 0, p2 = 9e18;
    		for (int i = 0; i <= n - 1; i++)
    		{
    			if (ans[i] != 1) ok = false;
    			p1 = max(p1, ans[i]);
    			p2 = min(p2, ans[i]);
    		}
    		if (ok)
    		{
    			stop(S);
    			continue;
    		}
    		S = "";
    		for (int i = 0; i <= n - 1; i++)
    		{
    			if (ans[i] == p2) S += "1";
    			if (ans[i] != p2) S += "0";
    		}
    		stop(S);
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    243
    时间
    10000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    14
    已通过
    5
    上传者