计算字符串的干草堆大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算字符串的干草堆大小相关的知识,希望对你有一定的参考价值。

我想创建一个密码复杂性检查器的穷人版本。我确定密码使用的粗略字符集及其长度。搜索空间将是:charset ^ length。为了将它与单个值进行比较,我想要用作指数2的最小x大于搜索空间。在更多mathy语言中我想要这个:

给定a和b找到最小的x,其中a ^ b <2 ^ x;

我的数学糟透了。有一种快速简便的方法来计算它吗?

答案

也许我的数学并没有那么多。

  2^x == a^b
= define a = 2^c, c = 2loga
  2^x == 2^c^b
=
  2^x == 2^c*b
=
  x == c*b
=  
  x == 2loga * b
另一答案

您可以使用对数来求解方程式。取两边的对数得出

x > b * log(a) / log(2)

如果你想找到方程所在的最小整数,我们可以在右边找到圆形。在python中,这可以实现为

import math

def find_x(a, b):
    return math.ceil(b * math.log(a) / math.log(2))

以上是关于计算字符串的干草堆大小的主要内容,如果未能解决你的问题,请参考以下文章

Django 干草堆和嗖嗖声的字符折叠

PHP上下文中的术语“干草堆”

1037. 二哥买草

C# 比较两个包含小写文本的 byte[] 数组

web代码片段

AcWing 2041. 干草堆(差分)