[C++] 纯文本查看 复制代码 #include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int>PII;
void solve(){
int n,ans=0;
cin>>n;
vector<int>a(n+10),l(n+10,1),r(n+10,n);
for(int i=1;i<=n;i++)cin>>a[i];
stack<int>s1,s2;
for(int i=1;i<=n;i++){
while(s1.size()&&(a[i]%a[s1.top()]!=0||a[i]==a[s1.top()])){
r[s1.top()]=i-1;
s1.pop();
}
s1.push(i);
}
for(int i=n;i>=1;i--){
while(s2.size()&&a[i]%a[s2.top()]!=0){
l[s2.top()]=i+1;
s2.pop();
}
s2.push(i);
}
for(int i=1;i<=n;i++){
ans+=(i-l[i]+1)*(r[i]-i+1);
}
cout<<ans<<endl;
}
signed main(){
int t=1;ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
// cin>>t;
while(t--)solve();
return 0;
} |