#2068. [合肥市] 小 C 的数(number)

[合肥市] 小 C 的数(number)

题目描述

小 C 非常喜欢数字。

这次,他得到了一个长度为 nn 的正整数数列 AA,第 ii 项为 aia_i

现在,小 C 想要找出来 AA最长的子序列 B={b1,b2,,bm}B = \{b_1, b_2, · · · , b_m\},使得对于 任意 的二元组 (i,j)(i, j)bib_ibjb_j 满足 倍数关系。 小 C 突然不会最长不下降子序列了,于是找到了你来帮他求出最长的子序列的长度。

子序列:对于长度为 nn 的数列 AA,对于 B={b1,b2,,bm}B = \{b_1, b_2, · · · , b_m\},若 $b_1 = a_{p_1}, b_2 = a_{p_2} , · · · , b_m = a_{p_m}$,则必须要满足 1p1<p2<<pmn1 ≤ p_1 < p_2 < · · · < p_m ≤ n,这样的数列 BB 称为 AA 的子序列。其中子序列 BB 可以为空。

倍数关系:对于两个数 a,ba, b,两者成倍数关系,即 aa 能被 bb 整除,或者 bb 能被 aa 整除,两者至少一种成立。

输入格式

从文件 number.in 中读取数据。

共两行,第一行有一个正整数 nn,表示数列 AA 的长度;

第二行有 nn 个正整数,第 ii 个数表示 aia_i

输出格式

输出到文件 number.out 中。

仅一行一个数,表示子序列长度的最大值。

样例

5
1 2 3 8 16
4

解释#1

最长子序列为 {1,2,8,16}\{1, 2, 8, 16\},长度为 44

10
1 4 6 3 9 11 16 24 42 36
4

解释#2

最长长度为 44,选取方案不唯一,其中一种最长的子序列为 {1,6,3,24}\{1, 6, 3, 24\}

样例3

见选手目录下的 number/number3.innumber/number3.ans

数据范围

说明

对于所有数据:0<N3×1060<ai1070 < N ≤ 3 × 10^6,0 < a_i ≤ 10^7

如有需要,请使用scanf读入以及减少使用STL,以降低程序本身带来的常数。