Plus grand commun diviseur pour tous les sous-segments

Go Hard math

Tâche «Plus grand commun diviseur pour tous les sous-segments»

Étant donné un tableau d’entiers a de longueur n. Pour chaque sous-segment possible [l, r] (1 ≤ l ≤ r ≤ n), il faut calculer le plus grand commun diviseur (PGCD) des éléments de ce sous-segment. Ensuite, parmi tous les PGCD obtenus, trouver le nombre de valeurs distinctes. Il est nécessaire d’implémenter un algorithme efficace, sachant que n peut aller jusqu’à 100000 et les éléments du tableau jusqu’à 10^9.

Format d\ entrée

La première ligne contient un entier n (1 ≤ n ≤ 100000). La deuxième ligne contient n entiers a_i (1 ≤ a_i ≤ 10^9), séparés par des espaces.

Format de sortie

Affichez un seul entier — le nombre de valeurs distinctes du PGCD parmi tous les sous-segments du tableau.

Exemples

Exemple 1

ENTRÉE
3 6 10 15
SORTIE
6

Exemple 2

ENTRÉE
4 2 4 8 16
SORTIE
4

Exemple 3

ENTRÉE
5 7 14 21 28 35
SORTIE
5

Exemple 4

ENTRÉE
5 10 15
SORTIE
3
main.go