from typing import List, Optional
from collections import deque, defaultdict, Counter
import heapq
import bisect
import sys
inf = float('inf')
# inf=0x3f3f3f3f
MOD = 10**9+7
# input=lambda:sys.stdin.readline()[:-1]
input = sys.stdin.readline
def cnt(a):
cnt_5=0
cnt_2=0
while a%5==0:
a//=5
cnt_5+=1
while a%2==0:
a//=2
cnt_2+=1
return cnt_2,cnt_5
def solve():
n,k=map(int,input().split())
nums=list(map(int,input().split()))
cnt_2_l=[0]*n
cnt_5_l=[0]*n
for i in range(n):
a,b=cnt(nums[i])
cnt_2_l[i]=a
cnt_5_l[i]=b
#print(cnt_2_l,cnt_5_l)
ans=0
l=0
r=0
l_cnt_2=0
l_cnt_5=0
r_cnt_2=0
r_cnt_5=0
for i in range(n):
l_cnt_2+=cnt_2_l[i]
l_cnt_5+=cnt_5_l[i]
r_cnt_2+=cnt_2_l[i]
r_cnt_5+=cnt_5_l[i]
while r<i and min(r_cnt_2-cnt_2_l[r],r_cnt_5-cnt_5_l[r])>=k:
r_cnt_2-=cnt_2_l[r]
r_cnt_5-=cnt_5_l[r]
r+=1
while l<=r and min(l_cnt_2,l_cnt_5)>k:
l_cnt_2-=cnt_2_l[l]
l_cnt_5-=cnt_5_l[l]
l+=1
if r<=i and min(l_cnt_2,l_cnt_5)==k:
ans+=r-l+1
print(ans)
for _ in range(int(input())):
solve()
最后用了三指针,够抽象的

京公网安备 11010502036488号