提交时间:2024-09-08 16:11:15
运行 ID: 32362
#include <bits/stdc++.h> #define int long long using namespace std; const int md = 998244353; int n,m,k,a[100005],b[100005]; inline int A (int x) { int r = 0,w[100005]; memset(w,0,sizeof(w)); w[0] = 1; for (int i = 1;i <= n;i++) { if (a[i] >= x) { r += w[a[i] - x]; } w[a[i]]++; } return r; } inline int B (int x) { int r = 0,w[100005]; memset(w,0,sizeof(w)); w[0] = 1; for (int i = 1;i <= n;i++) { if (b[i] >= x) { r += w[b[i] - x]; } w[b[i]]++; } return r; } signed main () { cin >> n >> m >> k; for (int i = 1;i <= n;i++) { cin >> a[i]; a[i] += a[i - 1]; } for (int i = 1;i <= m;i++) { cin >> b[i]; b[i] += b[i - 1]; } int ans = 0; for (int i = 1;i * i <= k;i++) { if (k % i == 0) { ans += A(i) * B(k / i); ans %= md; if (i != k / i) { ans += A(k / i) * B(i); ans %= md; } } } cout << ans << endl; return 0; }