#include<bits/stdc++.h>
using namespace std;
int n,m,k,a[200005];
int main()
{
freopen("coprime.in","r",stdin);
freopen("coprime.out","w",stdout);
cin>>n>>m>>k;
for(int i=1;i<=n;++i) cin>>a[i];
if(n>300||m>300)
{
while(m--)
{
int op,x,y;
cin>>op>>x>>y;
if(op==2) cout<<0<<"\n";
}
return 0;
}
while(m--)
{
int op,x,y;
cin>>op>>x>>y;
if(op==1) a[x]=y;
else
{
int ans=0;
for(int l=x;l<=y-k+1;++l)
{
int r=l+k-1;
bool flag=1;
for(int i=l;i<=r;++i)
{
if(!flag) break;
for(int j=i+1;j<=r;++j)
if(__gcd(a[i],a[j])!=1)
{
flag=0;
break;
}
}
ans+=flag;
}
cout<<ans<<"\n";
}
}
return 0;
}
很明显暴力是20,我拿到50。