#include <cstdio>using namespace std;const int maxn = 1E6 + 10;int cnt[maxn];int a[maxn];int main(){int n,m;scanf("%d%d",&n,&m);for(int i = 0;i < n ; ++i){scanf("%d",&a[i]);if(a[i] <= m) ++cnt[a[i]];}for(int i = m; i >= 1;--i){for(int j = i * 2;j <= m ; j += i){cnt[j] += cnt[i];}}int kmax = cnt[1],l;for(int i = 1;i <= m ; ++i){if(kmax < cnt[i]){kmax = cnt[i];l = i;}}printf("%d %d\n",l,kmax);for(int i = 0;i < n;++i){if(l % a[i] == 0) printf("%d ",i + 1);}printf("\n");return 0;}
[2016-03-26][632][D][Longest Subsequence]
原文:http://www.cnblogs.com/qhy285571052/p/6dd5f56d1eaf566709fcba224e690539.html