CF1061C Multiplicity
题目描述
给定一个整数数组 $a_1, a_2, \ldots, a_n$。
如果可以通过从 $a$ 中删除某些元素(可以不删除)得到数组 $b$,则称 $b$ 是 $a$ 的一个子序列。
如果数组 $b_1, b_2, \ldots, b_k$ 满足非空,且对于每个 $i$($1 \le i \le k$),$b_i$ 能被 $i$ 整除,则称该数组是“好”的。
请你求出 $a$ 的“好”子序列的个数,答案对 $10^9 + 7$ 取模。
如果两个子序列所包含元素的下标集合不同,则认为它们是不同的子序列。也就是说,元素的值不影响子序列的区分。特别地,长度为 $n$ 的数组 $a$ 一共有 $2^n - 1$ 个不同的非空子序列。
输入格式
第一行包含一个整数 $n$($1 \le n \le 100\,000$),表示数组 $a$ 的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^6$)。
输出格式
输出一个整数,表示“好”子序列的个数,对 $10^9 + 7$ 取模。
说明/提示
在第一个样例中,所有三个非空子序列都是“好”的:$\{1\}$,$\{1, 2\}$,$\{2\}$。
在第二个样例中,所有可能的“好”子序列有:$\{2\}$,$\{2, 2\}$,$\{2, 22\}$,$\{2, 14\}$,$\{2\}$,$\{2, 22\}$,$\{2, 14\}$,$\{1\}$,$\{1, 22\}$,$\{1, 14\}$,$\{22\}$,$\{22, 14\}$,$\{14\}$。
注意,有些子序列会出现多次,因为它们在原数组中出现的位置不同。
由 ChatGPT 4.1 翻译