首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用一个时间循环计算交叉和,乘法,除法,加,减

用一个时间循环计算交叉和,乘法,除法,加,减
EN

Stack Overflow用户
提问于 2017-03-09 17:53:34
回答 2查看 858关注 0票数 4

用一个时间循环计算交叉和(516 =5+1+6= 12),加、减、除和的算法是什么?我会使用modolus,但我不知道如何用我提到的基本数学术语来复制它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-10 02:52:45

让我们假设除法的意思是浮动除法,否则您可以使用地板除法来编写您自己的mod操作。

这里有一个O(n)时间、O(1)空间算法,它使用循环和比较来枚举数字并与它们相加(其中n是数字的数目)。

JavaScript代码:

代码语言: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));

票数 1
EN

Stack Overflow用户

发布于 2017-03-09 18:53:05

数字和

该公式不需要循环,并从数字和上的维基百科页面中解压。

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42702252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档