n, mod = int(input()), int(1000000007) a = list(map(int, input().split())) dp = [ 1for i in range(n) ] for i in range(0, n): forj in range(i): if (a[j] ** (i + 1) < a[i] ** (j + 1)): dp[i] += dp[j] print(sum(dp) % mod)
solution2
变形公式。a[ i ]j < a[ j ]i $\Leftrightarrow$ j $\times$ $log(a[i]) < i * log(a[j])$,即原题等价于求上升子序列的数量。