View Code of Problem 3571

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int i,j;
int main()
{
    int n,num[100005],l[100000],r[100000],sum[100005],le,ri,va;
    long long ans;
    while(scanf("%d",&n)!=EOF)
    {
        ans=0;
        for(i=1;i<=n;i++)
            scanf("%d",&num[i]);
        le=0;
        ri=n;
        //memset(l,0,sizeof(l));
        //memset(r,0,sizeof(r));
        for(i=1;i<=n;i++)
        {
            for(j=i-1;j>0;j--)
            {
                if(num[i]%num[j]==0)
                {
                      //l[i]=j;
                      le=j;
                      break;
                }
            }
            for(j=i+1;j<=n;j++)
            {
                if(num[i]%num[j]==0)
                {
                    //r[i]=j;
                    ri=j;
                    break;
                }
            }
            //sum[i]=(i-l[i])*((r[i]==0?n:r[i])-i);
            //ans+=(long long)sum[i];
            va=(i-le)*(ri-i+1);
            ans=ans+(long long)va;
        }
        printf("%lld\n",ans%1000000007);
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 3571