Description
Input
Output
Sample Input
3 2 5 3 1
Sample Output
4
Data Constraint
我们记录两个指针$l,r$
每一次加入一个新的$r$的时候,判断是否有模它余$k$的数,有的话就不断$++l$
然后只要每一次加上$r-l$即可
别忘了加上所有点单独成数组的情况
1 //minamoto 2 #include3 #define ll long long 4 using namespace std; 5 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 6 char buf[1<<21],*p1=buf,*p2=buf; 7 template inline bool cmax(T&a,const T&b){ return a k){29 for(int i=0;i<=mx;++i){30 int j=i*a[r]+k;31 if(j>mx) break;32 while(t[j]) --t[a[l++]];33 }34 }35 ++t[a[r]];36 res+=r-l;37 }38 printf("%lld\n",res);39 return 0;40 }