GCD of Contiguous Subseqence 2
問題文
長さNの数列Aが与えられます.「数列Aの空でない全ての連続部分列」における「連続部分列の長さ × 全要素の最大公約数」の総和を1000000007で割ったあまりを求めてください.つまり,
1≤i≤N∑i≤j≤N∑((j−i+1)×gcd(Ai,Ai+1,…Aj−1,Aj))
を1000000007で割ったあまりを求めてください.
ただし,部分列の要素が同じでも、取り出す位置が異なっていれば別の部分列として数えます.
また,数列の要素が1つの場合はその要素の値を最大公約数とします.つまり,任意の自然数xについて,gcd(x)=xです.
制約
- 1≤N≤105
- 1≤Ai≤109
- 入力はすべて整数
入力
出力
1≤i≤N∑i≤j≤N∑((j−i+1)×gcd(Ai,Ai+1,…Aj−1,Aj)) を1000000007で割ったあまりを出力してください.
サンプル
以下では(j−i+1)×gcd(Ai,Ai+1,…Aj−1,Aj) をポイントと呼びます.
- [8]の長さは1,最大公約数は8なのでポイントは8です.
- [8,3]の長さは2,最大公約数は1なのでポイントは2です.
- [8,3,80]の長さは3,最大公約数は1なのでポイントは3です.
- [8,3,80,4]の長さは4,最大公約数は1なのでポイントは4です.
- [8,3,80,4,164]の長さは5,最大公約数は1なのでポイントは5です.
- [3]の長さは1,最大公約数は3なのでポイントは3です.
- [3,80]の長さは2,最大公約数は1なのでポイントは2です.
- [3,80,4]の長さは3,最大公約数は1なのでポイントは3です.
- [3,80,4,164]の長さは4,最大公約数は1なのでポイントは4です.
- [80]の長さは1,最大公約数は80なのでポイントは80です.
- [80,4]の長さは2,最大公約数は4なのでポイントは8です.
- [80,4,164]の長さは3,最大公約数は4なのでポイントは12です.
- [4]の長さは1,最大公約数は4なのでポイントは4です.
- [4,164]の長さは2,最大公約数は4なのでポイントは8です.
- [164]の長さは1,最大公約数は164なのでポイントは164です.
これらを合計すると310になります.