用一个时间循环计算交叉和(516 =5+1+6= 12),加、减、除和的算法是什么?我会使用modolus,但我不知道如何用我提到的基本数学术语来复制它。
发布于 2017-03-10 02:52:45
让我们假设除法的意思是浮动除法,否则您可以使用地板除法来编写您自己的mod操作。
这里有一个O(n)时间、O(1)空间算法,它使用循环和比较来枚举数字并与它们相加(其中n是数字的数目)。
JavaScript代码:
function crossSum(num){
// Find the largest power of ten and number of digits, O(n)
var power = 1,
numDigits = 1;
while (power * 10 <= num){
power = power * 10;
numDigits++;
}
// Calculate cross sum, O(constant * n) = O(n)
var sum = 0,
digit;
while (num > 0){
digit = 0;
while ((digit + 1) * power <= num)
digit++;
console.log(digit)
sum = sum + digit;
num = num - power * digit;
power = power / 10;
}
return sum;
}
console.log(crossSum(516));
发布于 2017-03-09 18:53:05
数字和
该公式不需要循环,并从数字和上的维基百科页面中解压。

当然,它使用指数和模,这不是你列出的操作数之一,但是这种限制在现代编程语言中是永远不存在的,这使我相信它不是真正的限制,或者这是一个家庭工作问题。无论如何,StackOverflow作为未来程序员寻找解决问题的方法的参考,我相信这是所有意图和目的的数字和问题的解决方案,所以我在这里为未来的读者列出它。你不必接受这个答案,因为它不是一个真正的答案,但更多的是对其他人的参考。
https://stackoverflow.com/questions/42702252
复制相似问题