求一个数组中积大于K的字段的个数,码风有点新奇
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,T;
signed main()
{
cin>>T;
while(cin>>n>>k)
{
int a[100001];
for(int i=1;i<=n;++i)
cin>>a[i];
a[n+1]=1;
if(k==0)
{
cout<<n*(n+1)/2<<endl;
continue;
}
int i1,i2,ct=0,p=a[n];
for(i2=n,i1=n;i1;--i1)
{
if(a[i1+1]!=0)
p/=a[i1+1];
while(i2&&p<=k)
if(a[i2]==0)p=1,--i2;
else
p*=a[--i2];
ct+=i2;
}
cout<<ct<<endl;
}
}