第四题o(n)双指针: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=100010; int a[N],n,k; int s1[N],s2[N],a1[N],a2[N]; ll res; bool check(int i,int j) { int cnt1=s1[j]-s1[i-1],cnt2=s2[j]-s2[i-1]; int lft=min(s1[n]-cnt1,s2[n]-cnt2); return lft>=k; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>n>>k; for(int i=1;i<=n;i++) { int x,t; cin>>x; t=x; while(x%2==0) a1[i]++,x/=2; x=t; while(x%5==0) a2[i]++,x/=5; } for(int i=1;i<=n;i++) { s1[i]=a1[i]+s1[i-1]; s2[i]=a2[i]+s2[i-1]; } for(int j=1,i=1;j<=n;j++) { while(i<=j&&!check(i,j)) i++; res+=j-i+1; } cout<<res<<"\n"; return 0; }
点赞 评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务