C. [Sleeping Cup #4] Lottery Cheater

    传统题 文件IO:lottery 1000ms 512MiB

[Sleeping Cup #4] Lottery Cheater

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

负责人

注意

本题需要文件读写(lottery.in / lottery.out)。

本题中 01 串的下标从 0\bm{0} 开始计数,并且在输入 / 输出时从高位到低位给出。

以下是一个例子:

01 串 011\tt{011}
22 0\tt{0}
11 1\tt{1}
00 1 \tt{1}

题目背景

不知不觉中,时间已经来到了晚上 77 点——再有 11 个小时,今天的彩票就要停售了。

突然,C 队主帅神秘地邀请 Sleeping Dolphin 去买某种彩票,并说他有内部消息——据他自己坦白,他当年就是靠彩票发家并当上 C 队主帅的。

「C 队如此狼狈的原因原来是这样啊!」Sleeping Dolphin 极力掩盖住自己的愤怒,陪 C 队主帅去买彩票了。

题目描述

C 队主帅告诉 Sleeping Dolphin,某种彩票使用 mt1.9937 作为摇奖算法。这个算法的随机数生成策略如下:

  1. 读取当前的随机数种子 SSSS 是一个 nn 位 01 串)。
  2. 定义一个新的 01 串 TT,其初值为 SS
  3. 重复执行以下操作 kk 次:取出 TT 的第一位,然后放到末尾。
  4. 将 01 串 R=S xor TR=S \text{ xor } T 所对应的二进制数作为本次生成的随机数。

现在,Sleeping Dolphin 利用上一期开奖结果复原出了 01 串 RR,并要求你进一步复原出随机数种子 SS

输入格式

第一行两个正整数 n,kn,k

第二行一个长度为 nn 的 01 串 RR

输出格式

一行一个长度为 nn 的 01 串 SS

数据保证有解,但答案可能有多个,输出一个即可。

样例

4 3
1100
1000
6 9
100100
100000
8 8
00000000
10000000

样例 1 解释

根据题目描述,mt1.9937 将会按如下步骤生成随机数:

  1. 读取当前的随机数种子 S=1000S=\tt{1000}S=1000S=\tt{1000} 是一个 n=4n=4 位 01 串)。
  2. 定义一个新的 01 串 TT,其初值为 S=1000S=\tt{1000}
  3. 重复执行以下操作 k=3k=3 次:取出 TT 的第一位,然后放到末尾——
    • 11 次:$\tt{\color{red}1\color{black}000}\to\tt{\color{black}000\color{red}1}$。
    • 22 次:$\tt{\color{red}0\color{black}001}\to\tt{\color{black}001\color{red}0}$。
    • 33 次:$\tt{\color{red}0\color{black}010}\to\tt{\color{black}010\color{red}0}$。
  4. 将 01 串 R=S xor TR=S \text{ xor } T 所对应的二进制数作为本次生成的随机数:
$$\tiny\begin{aligned}\normalsize\tt{1000} \\\\\normalsize\tt{xor\hspace{1.05em}0100}\\\sout{\color{transparent}\texttt{123123123123123123}}\\\normalsize\tt{1100}\end{aligned} $$

因此 S=1000S=\tt{1000} 满足题意。

实际上,该样例有两个正确答案,另一个是 S=0111S=\tt{0111}

数据范围

对于 100%100\% 的数据,1n1061 \le n \le 10^61k1091 \le k \le 10^9

官方题解

link

Sleeping Cup #4 (Happy birthday, Sleeping Cup!)

未参加
状态
已结束
规则
IOI
题目
5
开始于
2025-4-12 0:00
结束于
2025-5-12 0:00
持续时间
3 小时
主持人
参赛人数
22