如何找到完美阵列的数量?

时间:2018-04-07 05:03:45

标签: algorithm math data-structures acm

我们得到了两个整数x和y,当且仅当它满足以下条件时,我们称一个数组是一个完美的数组:

  1. 数组中的元素是整数。
  2. 数组的长度恰好是y。
  3. 所有元素的乘积正好是x。
  4. 那么如何找到不同x和y的漂亮数组?

    例如,如果x为3且y为2,则有四个漂亮的数组:

    import { Switch, Route, Link } from 'react-router'
    <Route path='/' component={() => {
        return (
          <div>
            <Link to='/'>Home</Link>
            <Link to='/users'>Users</Link>
          </div>
        )
      }}
    />
    

2 个答案:

答案 0 :(得分:2)

让我们先做几个例子:

  1. x = 30, y = 3x的主要因素是2, 3, 5。可能的组合包括2 * 3 * 56 * 52 * 153 * 1030。对于长度为L的每种可能组合,我们需要计算3个时隙中其元素的可能排列数,即y!/(y-L)!。我们获得6 + 6 + 6 + 6 + 3 = 27

  2. x = 36, y = 5x的主要因素是2, 2, 3, 3。以与前一个示例相同的方式编写将是乏味的,所以让我们考虑我们想要放置y2, 2的{​​{1}}个二进制位。我们可以在stars and bars的帮助下计算3, 3分配到5个分箱的方式,我们需要在2, 2中放置4个小节。有2, 26!/(4!2!) = 15也是如此。所以答案是3, 3

    1. 将因子x转换为素数除数。这种因子分解是unique。最多可达225

      enter image description here

    2. 计算我们可以将每个p i 分配到sqrt(x)个bin中的方式。繁殖。

      enter image description here

    3. 考虑正/负乘以

      enter image description here

答案 1 :(得分:0)

首先,你需要考虑因素x。这可以在O(√x)(googl it)中完成。 设x =Πp_i^ k_i(p_i是素数) 计算y个单元的分布Σk_i的数量。 这是(Σk_i+ x-1)!/(x-1)!/Σk_i 还有正面和负面的自由度。 这是制作配对的方式。