#2068. [合肥市] 小 C 的数(number)
[合肥市] 小 C 的数(number)
题目描述
小 C 非常喜欢数字。
这次,他得到了一个长度为 的正整数数列 ,第 项为 。
现在,小 C 想要找出来 中 最长的子序列 ,使得对于 任意 的二元组 , 和 满足 倍数关系。 小 C 突然不会最长不下降子序列了,于是找到了你来帮他求出最长的子序列的长度。
子序列:对于长度为 的数列 ,对于 ,若 $b_1 = a_{p_1}, b_2 = a_{p_2} , · · · , b_m = a_{p_m}$,则必须要满足 ,这样的数列 称为 的子序列。其中子序列 可以为空。
倍数关系:对于两个数 ,两者成倍数关系,即 能被 整除,或者 能被 整除,两者至少一种成立。
输入格式
从文件 number.in
中读取数据。
共两行,第一行有一个正整数 ,表示数列 的长度;
第二行有 个正整数,第 个数表示 。
输出格式
输出到文件 number.out
中。
仅一行一个数,表示子序列长度的最大值。
样例
5
1 2 3 8 16
4
解释#1
最长子序列为 ,长度为 。
10
1 4 6 3 9 11 16 24 42 36
4
解释#2
最长长度为 ,选取方案不唯一,其中一种最长的子序列为 。
样例3
见选手目录下的 number/number3.in
和 number/number3.ans
。
数据范围
对于所有数据:。
如有需要,请使用scanf读入以及减少使用STL,以降低程序本身带来的常数。