CF1078E Negative Time Summation

题目描述

众所周知,计算机的速度越来越快。最近,Berland 的科学家们制造了一台能够让自己回到过去的机器! 更具体地说,它的工作方式如下:它有一个无限大的网格和一个站在某个格子上的机器人。网格上的每个格子要么是空的,要么包含 $0$ 或 $1$。这台机器还有一个由指令组成的程序,指令会被逐条执行。每条指令由恰好一个符号(字母或数字)表示,除最后一种操作外,每条指令的执行都恰好需要一个时间单位(比如一秒)。具体指令如下: - 0 或 1:机器人在当前位置的格子中写入该数字。如果该格子原本不是空的,则无论如何都会被新数字覆盖。 - e:机器人擦除当前位置格子中的数字。 - l、r、u 或 d:机器人向左/右/上/下移动一个格子。 - s:机器人在原地等待一个时间单位。 - t:设 $x$ 为 $0$,如果机器人所在的格子是空的;否则,$x$ 等于该格子中的数字加 $1$(即,如果该格子是 $0$,则 $x=1$,如果是 $1$,则 $x=2$)。然后,机器会回到 $x$ 秒之前的时刻。注意,这不会改变指令的执行顺序,但会让机器人和网格回到 $x$ 个时间单位前的状态。你可以把这个操作看作是按下了 $x$ 次 Ctrl-Z。 例如,假设初始网格完全为空,程序为 sr1t0,机器人初始位置为 $(0,0)$。 - 【当前时刻为 $0$,指令为 s】:什么都不做。 - 【当前时刻为 $1$,指令为 r】:机器人现在在 $(1,0)$。 - 【当前时刻为 $2$,指令为 1】:机器人在 $(1,0)$,该格子写入 $1$。 - 【当前时刻为 $3$,指令为 t】:回到 $1+1=2$ 个时刻之前,即回到时刻 $1$。 - 【当前时刻为 $1$,指令为 0】:机器人又回到 $(0,0)$,网格也恢复为空,但执行完这条指令后,该格子写入 $0$。你刚刚重写了历史。第三条指令的后果已经消失。 现在,Berland 的科学家们想要实际应用他们的机器。例如,他们想要实现两个整数的加法。 假设机器的初始状态如下: - 一个正整数以二进制形式写在网格上,其最低位在 $(0,1)$,从左到右依次为从高位到低位。 - 另一个正整数以二进制形式写在网格上,其最低位在 $(0,0)$,从左到右依次为从高位到低位。 - 其他所有格子都是空的。 - 机器人位于 $(0,0)$。 - 我们认为这个状态永远存在于过去;也就是说,如果你设法回到任何负的时刻,网格总是如上所述,机器人也永远在 $(0,0)$。 你的任务是编写一个程序,使得执行完后: - 机器人停在一个非空的格子上; - 如果我们从机器人当前位置开始,向右依次读取直到遇到第一个空格子,这些数字组成的二进制数(从高位到低位)就是 $a+b$。 注意,对其他格子没有任何要求。特别地,最终机器人左侧的格子也可能有数字。 每组测试你会得到最多 $1000$ 对 $(a, b)$,你的程序必须对所有这些输入都能正确工作。此外,由于机器的内存有限,你的程序长度不得超过 $10^5$ 条指令。

输入格式

第一行包含一个整数 $t$($1\le t\le 1000$),表示测试用例的数量。接下来的 $t$ 行,每行包含两个正整数 $a$ 和 $b$($1\le a, b < 2^{30}$),以十进制给出。

输出格式

输出仅一行,由不超过 $10^5$ 个字符组成,每个字符为 0、1、e、s、l、r、u、d、t 中的一个,表示你的程序。 注意,形式上你可以为不同的测试输出不同的程序。

说明/提示

由 ChatGPT 4.1 翻译