16
将两个数字相乘而不使用任何数字
给出两个以10为底的正整数的字符串作为输入,例如"12345"和"42"。"518490"在这种情况下,您的任务是输出包含其产品的字符串。 所不同的是,您不得在代码中使用任何数字类型。No ints,floats,unsigned longs等,没有内置的复数类型或任意精度的整数,或沿这些线的任何内容。您可能没有使用这些类型的文字,也没有使用返回它们的任何函数,方法,运算符等。 您可以使用字符串,布尔值,数组或其他通常不用于表示数字的东西。(但是请注意,不调用数字类型就不可能索引到数组或获取数组的长度。)chars是允许的,但是您不能对它们执行任何算术或按位运算,也不能将其视为除表示字符串一部分的令牌。(char允许对s进行字典比较。) 您可能无法解决该限制。这包括(但不限于)在eval类型函数内使用数字类型,将隐式类型转换为数字类型,对支持它们的非数字类型使用数字或按位运算符,使用存储在容器类型内部的数字类型或调用函数或外部程序以字符串形式返回数值结果。(如果答案中出现其他解决方法,我保留添加到此列表的权利。)您必须仅使用非数字类型自己实现乘法。 输入和输出可以通过任何方便的方法进行,只要数据以字符串形式进入和退出您的代码即可。您可以假定两个输入参数中的每个参数仅包含ASCII字符,[0-9]并且不会以开头0。您的输出也不应该有前导零。 还有一件事:您的代码必须正确处理至少10个字符的输入,并且必须在一分钟之内在现代计算机上运行该范围内的所有输入。发布之前,请检查给定输入9999999999和时9999999999,程序99999999980000000001在不到一分钟的时间内输出。专门存在此限制是为了避免通过分配大小数组a*b然后对其进行迭代来起作用的答案,因此请记住,该形式的答案将不符合要求。 这是代码高尔夫球,因此最短的有效解决方案(以字节为单位)获胜。