CF209 Div2 (D) 找最长的连续子序列拥有相同的最大公约数,并且最大公约数是这个序列中的一个数-------左右延伸的方法
2015-06-01 15:22
344 查看
#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <string> #include <vector> #include <queue> //CF209 Div2 (D) 找最长的连续子序列拥有相同的最大公约数,并且最大公约数是这个序列中的一个数-------左右延伸的方法 #define N 300010 using namespace std; int a , b ; int main() { int n, t, k, ans, l, r, h; while(scanf("%d", &n)!=EOF) { for(t=1; t<=n; ++t) scanf("%d", a+t); ans=0; for(t=1; t<=n; ) //左右延伸 { l=r=t; while(l>=1&&a[l]%a[t]==0) l--; while(r<=n&&a[r]%a[t]==0) r++; //以上操作是将序号为t左右延伸到最大长度 h=r-l-1; //之前的最大长度 if(h>ans) { ans=h; k=0; } if(h==ans) { b[k++]=l+1; } t=r; //t=r是下一个左右延伸的起点 } printf("%d %d\n", k, ans-1); for(t=0; t<k; ++t) printf("%d ", b[t]); printf("\n"); } return 0; }
相关文章推荐
- CF221 Div2 (C)
- extundelete恢复备删除的文件
- 两个类相互包含引用的问题--类前向声明
- asp.net 登陆验证 Form表单验证的3种方式 FormsAuthentication.SetAuthCookie;FormsAuthentication.RedirectFromLoginPage;FormsAuthenticationTicket
- centos 5.6下部署postfix
- linux信号量初识
- php计算整个目录大小的方法
- IOS开发之__bridge,__bridge_transfer和__bridge_retained
- 黑马程序员-java之TreeSet,Comparable,Comparator
- myeclipse下载网址
- contiki系统分析:时钟
- C/C++ void func() const
- MySQL性能优化的最佳20+条经验(转)
- 纯SSH框架WEB开发流程
- socketpair初识
- PLSQL 块demo
- 人才为什么是不听话的人?高级管理思维的九项锤炼
- CF 209 Div2 (C) 快速幂 求分子(一堆数相加)和分母的最大公约数
- OSD的主要实现方法和类型(转)
- leetcode 8 string to integer(atoi)