logo AlgoBeat OnlineJudge
登录 注册

Official Editorial

作者: 035966_L3  ·  发布于 2026-06-14 20:44:03  ·  最后修改于 2026-06-14 20:54:40
已通过
审核员:joe_zxq 彩笔 · 2026-06-14 20:54:40

https://scg3.piaoztsdy.cn/p/106

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

#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;
}

暂无评论

登录 后即可评论。