【发布时间】:2021-01-12 14:56:57
【问题描述】:
我的大学书上的练习有问题。这里是:
我们对表示只有两个数字的正整数的二进制系统感兴趣:1 和 2(没有零!)。随后的位置对应于两者的连续幂,如在通常的二进制表示法中:在第 k 个位置有一个数字,其值乘以 2^k,因为 k = 0, 1, 2...。在这个系统中——因为没有前导零——除了前面提到的数字表示之外,我们使用一个值来指定所选数字的数量,我们称之为 c。因此,每个数字由一对 (a, c) 表示,其中 a 是 1 和 2 的有限序列,c 确定该序列的长度。例如,对 (12, 3) 代表数字 4,对 (221, 3) 代表数字 13。编写一个函数,对于正数 x,确定其值在相关系统中的表示并通过参数 y 传递它。让我们同意,如果 x 不是正数,字段 c 的值应该是 0。
我发现我可以轻松地将十进制输入转换为二进制系统,然后将二进制转换为练习中提到的系统。从右边开始,我需要通过将高位 1 转换为低位 2 来删除零。
E.g.: Decimal = 21. Binary = 10101. the system form the exercise = 10101 -> 10021 ; 10021 -> 02021 -> 01221
但是,可能有更有效的解决方案可以将练习中的十进制直接转换为系统。感谢您在寻找算法思维路径方面的帮助。然后我会自己编写代码以确保我理解它。
这是我在论坛上的第一篇文章,英语不是我的母语。如果我表达得不够清楚,我很抱歉。
亲切的问候
【问题讨论】:
标签: algorithm binary converters