markdown
C. 多重性
每个测试的时间限制:3 秒
每个测试的内存限制:256 MB
输入:标准输入
输出:标准输出
给定一个整数数组 a1,a2,…,an。
如果可以通过删除原数组中的某些元素得到数组 b,则称 b 是 a 的一个子序列。
数组 b1,b2,…,bk 被称为“好”的,当且仅当它非空,并且对于每一个 i(1≤i≤k),bi 能被 i 整除。
请找出 a 中“好”子序列的数量,结果对 109+7 取模。
如果两个子序列所包含的元素在原数组中的下标集合不同,则认为它们是不同的。也就是说,在比较子序列时,元素的值并不重要。特别地,数组 a 恰好有 2n−1 个不同的非空子序列。
输入
第一行包含一个整数 n(1≤n≤100000)—— 数组 a 的长度。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤106)。
输出
输出一个整数 —— 好子序列的数量对 109+7 取模的结果。
输入样例 1
2
1 2
输出样例 1
3
输入样例 2
5
2 2 1 22 14
输出样例 2
13
说明
在第一个样例中,所有三个非空子序列都是好的:{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}。
注意,某些子序列被列出了多次,因为它们在原数组中出现多次。