首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何有效地解决这个涉及“模数”运算的编码问题?

如何有效地解决这个涉及“模数”运算的编码问题?
EN

Stack Overflow用户
提问于 2019-01-07 01:06:46
回答 1查看 0关注 0票数 0

我们给出一个整数'N'。我们可以在范围(1到z)中选择任意2个数字(a和b)。L的值由下式给出,

代码语言:javascript
复制
L = Max(( (N%a) %b) %N)  

我们必须计算给出(L)值的对的数量(a,b)。我知道一个简单粗暴的办法,一,O(n ^ 2)解决方案。有没有更有效的方法来解决这个问题?!谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-01-07 10:39:22

我可以破译的唯一方法:Max(( (N%a) %b) %N)是最大值取代所有a, b对。

如果z > N/2

  • 首先,观察到,如果两个ab是大于N,则(N%a) % b产率N,所以N%a) %b) %N其产率是1,不令人满意的小。因此,其中至少有一个应小于N
  • 其次,观察(更好的是,证实)了的最大值N % a时,实现aN/2 + 1甚至N(N + 1)/2奇数(重要提示:这是以后的2的倍数的一半N)。叫它一个maximizer
  • 最后,观察任何b大于该模数的模型都不会触及它。证明这确实是理想的最大值。

现在你有足够的事实来提出一个有效的单行程序(不要忘记这个a > N, b = maximizer案例)。

同样的逻辑适用于z < N/2

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

https://stackoverflow.com/questions/-100008951

复制
相关文章

相似问题

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