如何从字符串中找到小数和二进制?

问题描述 投票:0回答:2

我有输入如5 2 113221101000101('5'是quinary和'2'是二进制)我有一个number quinary和二进制但它们没有空格连接('113221101000101')。

所以我的问题是如何通过q​​azxswpoi找到确切的number(数字是5 2 113221101000101

我添加一些例子:

837的数字是5 2 113221101000101

837的数字是13 7 1016

13的数字是4 12 2222248A

682A代表nums F10

algorithm
2个回答
1
投票

您应该意识到可以从右到左或从左到右解码字符串。算法不同但直截了当。

您可以使用第一个基础从左侧开始解码字符串,使用另一个基础从右侧解码。

始终根据哪个值较小(从右侧解码的一个或从左侧开始的一个)解码另一个字符。如果两个值相等,则为较小的基数再解码一个数字。

当两个解码都消耗了字符串的所有字符时,它们应该产生与您的结果相同的值。

例:

15

0
投票

您可以通过“强力”工作,即执行来自两个给定基础的所有转换,包括所有可能的拆分,并停止相等(除非可以使用多种解决方案)。

事实上,你可以通过相对有效的方式实现这一目标

  • 将整个字符串从基础A转换为从左到右,保留所有中间结果;
  • 从基础B再次从左向右转换,并与互补的碱基-A解码进行比较。

注意,可以估计两个表示中的位数,因为它们与基数的对数成反比。需要注意的是,可以预测一个单元内的位数,这可以略微缩短转换工作量。

例如,第一个数字产生长度估计值4.52和10.48,这暗示了分解5/10。

© www.soinside.com 2019 - 2024. All rights reserved.