#CF1061C. Multiplicity

    ID: 6716 传统题 1000ms 256MiB 尝试: 3 已通过: 1 难度: 10 上传者: 标签>数据结构动态规划其他数学数论实现*1700

Multiplicity

markdown C. 多重性

每个测试的时间限制:33
每个测试的内存限制:256256 MB
输入:标准输入
输出:标准输出

给定一个整数数组 a1,a2,,ana_1, a_2, \dots, a_n
如果可以通过删除原数组中的某些元素得到数组 bb,则称 bbaa 的一个子序列。

数组 b1,b2,,bkb_1, b_2, \dots, b_k 被称为“好”的,当且仅当它非空,并且对于每一个 ii1ik1 \le i \le k),bib_i 能被 ii 整除。

请找出 aa 中“好”子序列的数量,结果对 109+710^9+7 取模。

如果两个子序列所包含的元素在原数组中的下标集合不同,则认为它们是不同的。也就是说,在比较子序列时,元素的值并不重要。特别地,数组 aa 恰好有 2n12^n - 1 个不同的非空子序列。

输入
第一行包含一个整数 nn1n1000001 \le n \le 100000)—— 数组 aa 的长度。
第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1061 \le a_i \le 10^6)。

输出
输出一个整数 —— 好子序列的数量对 109+710^9+7 取模的结果。

输入样例 1

2
1 2

输出样例 1

3

输入样例 2

5
2 2 1 22 14

输出样例 2

13

说明
在第一个样例中,所有三个非空子序列都是好的:{1}\{1\}{1,2}\{1,2\}{2}\{2\}

在第二个样例中,可能的好子序列有:{2}\{2\}{2,2}\{2,2\}{2,22}\{2,22\}{2,14}\{2,14\}{2}\{2\}{2,22}\{2,22\}{2,14}\{2,14\}{1}\{1\}{1,22}\{1,22\}{1,14}\{1,14\}{22}\{22\}{22,14}\{22,14\}{14}\{14\}
注意,某些子序列被列出了多次,因为它们在原数组中出现多次。