题意:f(l,r)表示i的数量,i满足(l=
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define ll long long
const int mod=1000000000+7;
const int ma=100000+10;
int n,a[ma];
int l[ma],r[ma],dp[ma],da[ma];
int main()
{
while(cin>>n)
{
for(int i=1;i<=n;i++) cin>>a[i];
memset(dp,0,sizeof(dp));
memset(da,0,sizeof(da));
for(int i=0;i<ma;i++)
{l[i]=0;r[i]=n+1;}
int j;
for(int i=1;i<=n;i++)
{
if(dp[a[i]])l[i]=dp[a[i]];
j=1;
while(j*a[i]<=10000){dp[j*a[i]]=i;j++;}
}
for(int i=n;i>0;i--)
{
if(da[a[i]])r[i]=da[a[i]];
j=1;
while(j*a[i]<=10000)
{
da[j*a[i]]=i;
j++;
}
}
ll ans=0;
for(int i=1;i<=n;i++)
{
ans=(ans+(r[i]-i)*(i-l[i]))%mod;
}
cout<<ans<<endl;
}
return 0;
}