(File IO): Entrada: camphor.in de salida: camphor.out
límite de tiempo: 1000 ms limitaciones de espacio: 131072 KB restricciones específicas
Goto Boletín de problemas
Título Descripción
madera de alcanfor conocido como uno de los cuatro famosos Jiangnan muy singular, su corteza áspera, la textura es muy uniforme, nunca se dividió punto moteada de chopo, sauce del tumor sin nódulos; un tronco subrama dos, dos en cuatro largo camino por recorrer, no esquinas cortadas no será superfluo; forma de corona es esférica, y dibujar la curva agraciado en el cielo. Además de las ventajas anteriores, árbol de alcanfor tiene un arma secreta. Eso es ........................ Con su simple, carácter pesado buena para ganar el favor de un pequeño zorro! ! ! Diciendo que un día, un pequeño lago Fox está caminando, todos una repentina ráfaga de viento que sopla, se apresuró a cerrar los ojos. Cuando abrió los ojos de nuevo y se encontró junto al lago más hermoso de una fila ordenada de alcanfor. Pequeño zorro está muy excitado, que es observador de cada árbol, y el número del número de sus hojas. Ella sentía que si el número de hojas de dos árboles adyacentes al primer ser irritante. Así, un pequeño zorro como fila seleccionada de la pluralidad de árboles de alcanfor, en las condiciones que satisfacen el número de hojas adyacentes de los dos árboles no son primos entre sí, de modo que el árbol tanto como sea posible.
Introduzca
la primera línea de un número entero positivo
, expresado
árboles de alcanfor. La segunda línea
un número entero positivo, la
el número i representa el número de hojas de árboles de alcanfor.
Salida de
un número entero positivo que indica el número de árboles a las elecciones.
entrada de la muestra
. 6
. 6. 8 15. 5 2. 3
Ejemplo de salida
4
límites del rango de datos
para
% de datos
Para
% de los datos
, el número de hojas
Nota: el árbol seleccionado no puede cambiar su posición, es decir, si la primera seleccionada
de árbol, en donde
considerado
与
vecino.
Tip
Selección
, la primera
, primero
suma primero
árboles
Ideas de resolución de problemas
que no podemos encontrar que este es uno de la serie de caídas más larga! ! ! Nos limitaremos a las condiciones
en
es el mayor divisor común mayor que uno, pero sólo
puntos. . De hecho, podemos
's
cambiado
, no habrá tiempo de espera, pero no me pregunte por qué. .
para ir de ~
código
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int a[100010],n,f[100010],ans;
int check(int x,int y)
{
if(x%y==0)
return y;
else
return check(y,x%y);
}
int log(int x){
int t=0;
while(x>0)
{
x=x/2;
t++;
}
return t;
}
int main(){
freopen("camphor.in","r",stdin);
freopen("camphor.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
f[i]=1;
}
for(int i=2;i<=n;i++)
{
for(int j=i-log(i)*2;j<=i-1;j++)
if (j>0)
if(check(a[i],a[j])>1)
f[i]=max(f[i],f[j]+1);
}
for(int i=1;i<=n;i++)
if(f[i]>ans)
ans=f[i];
printf("%d",ans);
}