将数字分成三组

时间:2018-10-30 16:59:46

标签: algorithm

考虑这个数字:785462454105,我需要一种算法,该算法首先将数字分成最大长度为3(从右侧开始)的组,看起来像这样:

a = 105
b = 454
c = 462
d = 785

我当然知道我可以将数字转换为字符串,但是我想不做任何转换。另外,我不允许使用编程语言中使用的任何数组和任何特殊方法或类(我使用的是Java,但正如我所说,我不允许使用这些函数)。我拥有的唯一工具是循环,条件从句以及数学,算术和逻辑运算符。 也可以使用循环将454000462000000淘汰掉,但是如何摆脱零呢? 请注意,类似1234的内容应变为:

a = 234
b = 1

1 个答案:

答案 0 :(得分:1)

如果除以1000所得的余数,则很容易得到一组最后3位数字。

785462454105 % 1000 == 105

那么您可以去除最后3个数字除以1000:

785462454105 / 1000 == 785462454

循环重复此操作,直到数字变为零就可以了。

剩下的唯一问题是打印前导零: 123045 % 1000 = 45,但我们要打印045。

通常,您需要一个单独的内部循环,例如,对十进制数字进行计数(除以10,直到变为零),然后打印缺失的零的数量(等于您要减去的位数)。您的电话号码)。

但这是一个简单的案例,您可以通过几个if来独占它:

long a = 785462454105;
while (a > 0) {
  long x = a % 1000;
  a /= 1000;
  if (x < 10) {
    System.out.print("00");
  } else if (x < 100) {
    System.out.print("0");
  }
  System.out.println(x);
}