动态编程,时间复杂度问题

时间:2018-02-15 17:30:46

标签: algorithm data-structures dynamic-programming

我需要找到区间[a,b]中的所有数字,它们满足两个条件:

  • 可以被k
  • 整除
  • 数字位数之和应位于区间[c,d]
  • 1≤ķ≤10 ^ 11; (1≤一个,b将10 ^ 11); (1≤c,b≤99)

(1≤k≤10^ 11)(1≤a,b <10 ^ 11)

天真的实施(即使有改进)太慢了。 有人可以帮助&#34;动态&#34;实现了吗? 或者也许一些有用的建议&amp;链接? 我很感激你的帮助。

1 个答案:

答案 0 :(得分:0)

我不认为动态编程可以帮到你。 第一个条件非常简单 - 您可以用[步长k]迭代[a,b]范围。所以复杂性是O((b-a)/ k)。 至于第二个条件,你可以澄清是否&#34; b&#34;在它是相同的&#34; b&#34;在第一个条件?如果是这样,利用它是非常简单的,结果是一个元素或一个空列表。所以复杂性是O(1)。 如果&#34; b&#34;是不同的我无法想象如何改善O((b-a)/ k)利用第二个条件。