Größter gemeinsamer Teiler für alle Teilabschnitte
Go
Hard
math
Aufgabe «Größter gemeinsamer Teiler für alle Teilabschnitte»
Gegeben ist ein Array a ganzer Zahlen der Länge n. Für jeden möglichen Teilabschnitt [l, r] (1 ≤ l ≤ r ≤ n) muss der größte gemeinsame Teiler (GGT) der Elemente dieses Teilabschnitts berechnet werden. Anschließend soll unter allen berechneten GGTs die Anzahl der verschiedenen Werte ermittelt werden. Es ist ein effizienter Algorithmus zu implementieren, da n bis zu 100000 und die Array-Elemente bis zu 10^9 betragen können.
Eingabeformat
Die erste Zeile enthält eine ganze Zahl n (1 ≤ n ≤ 100000). Die zweite Zeile enthält n ganze Zahlen a_i (1 ≤ a_i ≤ 10^9), getrennt durch Leerzeichen.
Ausgabeformat
Geben Sie eine ganze Zahl aus — die Anzahl der verschiedenen GGT-Werte unter allen Teilabschnitten des Arrays.
Beispiele
Beispiel 1
EINGABE
3
6 10 15
AUSGABE
6
Beispiel 2
EINGABE
4
2 4 8 16
AUSGABE
4
Beispiel 3
EINGABE
5
7 14 21 28 35
AUSGABE
5
Beispiel 4
EINGABE
5 10 15
AUSGABE
3
main.go