1 条题解

  • 1
    @ 2025-2-3 14:11:55

    由题意可以列出一个 nn 元异或方程组,且每个方程中只有 22 个未知数。直接钦定任意一个值后用代入法递归解方程即可。

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e6 + 12;
    bool ok[N], ans[N];
    int n, k;
    string s;
    void fill(int i)
    {
    	if (ok[i]) return;
    	ok[i] = true;
    	int next = (i + k) % n;
    	ans[next] = ans[i] ^ (s[next] - '0');
    	fill(next);
    }
    int main()
    {
    	freopen("lottery.in", "r", stdin);
    	freopen("lottery.out", "w", stdout);
    	cin >> n >> k >> s;
    	reverse(s.begin(), s.end());
    	k %= n;
    	for (int i = 0; i <= n - 1; i++)
    		fill(i);
    	for (int i = n - 1; i >= 0; i--)
    		putchar(ans[i] + '0');
    	return 0;
    }
    
    • 1

    信息

    ID
    143
    时间
    1000ms
    内存
    512MiB
    难度
    4
    标签
    递交数
    15
    已通过
    3
    上传者