首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用并行线程来总结10亿个连续数字,返回一个数字?

使用并行线程来总结10亿个连续数字,返回一个数字?
EN

Stack Overflow用户
提问于 2011-09-28 18:20:27
回答 6查看 2.2K关注 0票数 1

在我的面试中遇到这个问题。

我的回答是:

  1. 将1b数字划分为10组,
  2. 使用线程池为每个组创建一个线程,每个线程总共10个
  3. ,每个线程总结组传递的结果,并返回值
  4. use来总结10个线程结束后的所有结果,返回最后值

我怀疑这个问题的预期答案是什么?如果它在单cpu中运行(没有多线程模式),那么单线程应该比多线程更快吗?

非常感谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-09-28 18:37:23

刁钻的问题,也许-看看你能不能跳出盒子去思考?

如果它们是连续的,如标题中所指出的,并且以n开头,那么:

代码语言:javascript
复制
final long BILLION = 1000000000;
long answer = (BILLION * n) + ( BILLION*BILLION + BILLION ) / 2;

这在10亿左右的地方起作用--在那之后,它会溢出。

不用说,我看不出多线程有多大的好处!

票数 7
EN

Stack Overflow用户

发布于 2011-09-28 18:34:08

我对你的回答非常不满意。(也许我误解了这个问题。)

更详细的答案是:给定参数i和j,其中我想要i,i+1,i+2,…,j-2,j-1,j be之和。

线程1中的

  1. 计算线程2中的i*(i+1)/2和
  2. 计算j*(j+1)/2
  3. 连接线程并计算和

一定要在算法中使用BigInteger。

我猜如果i和j是非常大的数字,那么多线程将比单线程更快。但我看不出超过两个线程的优势

票数 2
EN

Stack Overflow用户

发布于 2011-09-28 18:44:48

http://businessmajors.about.com/od/gmatpracticequestions/a/GMATtest1.htm

我想,面对这个问题,我可能会回答:“我会先研究这个问题,因为我猜想有一种公式化的解决方案,它能比蛮力法更快地给出答案。数学家们已经想出了解决各种聪明小问题的公式。找到一位专家来快速、高效地解决问题,没什么好丢脸的。”

当然,在一次面试中,谁有时间给出这样的回答呢?

更新:哎呀,我又读了你的问题,我看到面试官强迫你使用线程之类的东西。尽管如此,我可能已经指出,许多蛮力问题的解决要优雅得多,稍微有点奥数。告诉他使用并行线程运行浏览器,打电话给谷歌,进行搜索,并在20秒内解决问题。

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

https://stackoverflow.com/questions/7587676

复制
相关文章

相似问题

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