[[{}]]sx256?^dd3^8d^1-/8092541**r255/BF*+d0=xP
在线尝试!
在stdin上输入,在stdout上输出。
通过计算所需输出的公式(以256为基数)可以起作用。然后,使用dc中的P命令将base-256数字打印为字符串。
进一步说明:
令n为输入n。dc程序计算
A =下限(256 ^ n / 255)* 125(直流将BF解释为11 * 10 + 15 = 125)
和
B =楼板((256 ^ n)^ 3 /(8 ^ 8-1))* 8092541 *(256 ^ n)。
为一个:
通过几何级数公式,观察到1 + 256 + 256 ^ 2 + ... + 256 ^(n-1)等于(256 ^ n-1)/ 255,这等于floor(256 ^ n / 255) )。因此,这是由以256为底的n 1组成的数字。
当您将其乘以125得到A时,结果是由以256为底的n 125组成的数字(当然,125是以256为底的一位数字)。最好将基数为256的数字写为十六进制数字。125是十六进制7D,所以A是以256为基数的n个连续的n个7D。
B是类似的:
这次观察到1 + 16777216 + 16777216 ^ 2 + ... + 16777216 ^(n-1)等于(16777216 ^ n-1)/ 16777215,这等于下限(16777216 ^ n / 16777215)。
现在,256 ^ 3 = 16777216,而8 ^ 8-1 = 16777215,所以这就是我们要计算的floor((256 ^ n)^ 3 /(8 ^ 8-1))。
从几何级数表示中,基数256中的此数字是100100100 ... 1001,其中n个数字为1,其余数字为0。
它乘以8092541,即十六进制的7B7B7D。在基数256中,这是一个由数字7B,7B和7D组成的三位数(为方便起见,将这些数字写成十六进制)。
因此,写在基数256中的乘积是一个3n位数字,由重复n次的3位数字7B 7B 7D组成。
这乘以256 ^ n,得到一个4n位以256为底的数字,该数字由重复n次的3位7B 7B 7D组成,后跟n 0。是B。
现在加A + B会产生4n位以256为基数的数字,该数字由重复n次的3位7B 7B 7D组成,后跟n 7D。由于图7B和图7D是ASCII代码{
和}
,分别,这是由n个拷贝的串的{{}
随后的n个拷贝}
,而这正是我们希望对于n> 0的直流P指令打印基地-256数就像我们需要的那样。
不幸的是,必须将n = 0视为特例。上面的计算碰巧对n = 0得出0的结果;在那种情况下,我只是对字符串的打印进行了硬编码{}
。