算法1
(暴力枚举) $O(n^2logn)$
枚举k的约数 logk ; 计算a,b中连续1的个数n^2,暴力枚举。
差分技巧待我复习下。
python 代码
#k = v*w
#a中连续1长度为v的个数*b中连续1长度为w的个数
#对a中连续线段长度进行统计: 长度1:a1个 2:a2个
def count(arr, x):
#统计arr中连续1长度个数
cnt = 0
res = 0
l = len(arr)
for num in arr:
if num: cnt+=1
else:
#有可能连续1个数小于x
if cnt>=x: res += cnt - x + 1
cnt = 0
#最后一个数是1
if cnt>=x: res += cnt - x + 1
return res
n, m, k = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
#print(n,m,k,a,b)
ans = 0
import math
#暴力求k的约数, logk;
for i in range(1, int(math.sqrt(k))+1):
#print(i)
if k%i == 0:
ans += count(a,i)*count(b,k//i) #
if i!=k//i:
ans += count(b,i)*count(a,k//i)
#O(k^2*logk)
print(ans)