GCD of Contiguous Subsequence 2

2 secs 1024 MB
take44444's icon take44444

GCD of Contiguous Subseqence 2

問題文

長さNNの数列AAが与えられます.「数列AAの空でない全ての連続部分列」における「連続部分列の長さ ×\times 全要素の最大公約数」の総和を10000000071000000007で割ったあまりを求めてください.つまり,

1iNijN((ji+1)×gcd(Ai,Ai+1,Aj1,Aj))\displaystyle \sum_{1 \leq i \leq N} \sum_{i \leq j \leq N} ((j-i+1) \times \gcd(A_i, A_{i+1}, \dots A_{j-1},A_j))

10000000071000000007で割ったあまりを求めてください.

ただし,部分列の要素が同じでも、取り出す位置が異なっていれば別の部分列として数えます.

また,数列の要素が11つの場合はその要素の値を最大公約数とします.つまり,任意の自然数xxについて,gcd(x)=x\gcd(x)=xです.

制約

  • 1N1051 \leq N \leq 10^5
  • 1Ai1091 \leq A_i \leq 10^9
  • 入力はすべて整数

入力

NN
A1ANA_1 \dots A_N

出力

1iNijN((ji+1)×gcd(Ai,Ai+1,Aj1,Aj))\displaystyle \sum_{1 \leq i \leq N} \sum_{i \leq j \leq N} ((j-i+1) \times \gcd(A_i, A_{i+1}, \dots A_{j-1},A_j))10000000071000000007で割ったあまりを出力してください.

サンプル

入力例1
5
8 3 80 4 164
出力例1
310

以下では(ji+1)×gcd(Ai,Ai+1,Aj1,Aj)(j-i+1) \times \gcd(A_i, A_{i+1}, \dots A_{j-1},A_j) をポイントと呼びます.

  • [8][8]の長さは11,最大公約数は88なのでポイントは88です.
  • [8,3][8,3]の長さは22,最大公約数は11なのでポイントは22です.
  • [8,3,80][8,3,80]の長さは33,最大公約数は11なのでポイントは33です.
  • [8,3,80,4][8,3,80,4]の長さは44,最大公約数は11なのでポイントは44です.
  • [8,3,80,4,164][8,3,80,4,164]の長さは55,最大公約数は11なのでポイントは55です.
  • [3][3]の長さは11,最大公約数は33なのでポイントは33です.
  • [3,80][3,80]の長さは22,最大公約数は11なのでポイントは22です.
  • [3,80,4][3,80,4]の長さは33,最大公約数は11なのでポイントは33です.
  • [3,80,4,164][3,80,4,164]の長さは44,最大公約数は11なのでポイントは44です.
  • [80][80]の長さは11,最大公約数は8080なのでポイントは8080です.
  • [80,4][80,4]の長さは22,最大公約数は44なのでポイントは88です.
  • [80,4,164][80,4,164]の長さは33,最大公約数は44なのでポイントは1212です.
  • [4][4]の長さは11,最大公約数は44なのでポイントは44です.
  • [4,164][4,164]の長さは22,最大公約数は44なのでポイントは88です.
  • [164][164]の長さは11,最大公約数は164164なのでポイントは164164です.

これらを合計すると310310になります.

入力例2
5
12 12 12 12 6
出力例2
330

提出


Go (1.21)