提交时间:2024-09-08 13:17:54

运行 ID: 32255

#include <bits/stdc++.h> using namespace std; #define ll long long #define MOD 998244353 const int N = 1e5 + 5; int n, m, k; int a[N], b[N], cnt[N]; ll ans; ll madd(ll x, ll y) { return (x + y) % MOD; } ll mmul(ll x, ll y) { return x * y % MOD; } ll check(int x, int y) { memset(cnt, 0, sizeof(cnt)); cnt[0] = 1; int sum = 0; ll res1 = 0; for (int i = 1; i <= n; i++) { sum += a[i]; if (sum >= x) res1 = madd(res1, cnt[sum - x]); cnt[sum]++; } memset(cnt, 0, sizeof(cnt)); cnt[0] = 1; sum = 0; ll res2 = 0; for (int i = 1; i <= m; i++) { sum += b[i]; if (sum >= y) res2 = madd(res2, cnt[sum - y]); cnt[sum]++; } return mmul(res1, res2); } int main() { freopen("rain.in", "r", stdin); freopen("rain.out", "w", stdout); cin >> n >> m >> k; for (int i = 1; i <= n; i++) scanf("%d", a + i); for (int i = 1; i <= m; i++) scanf("%d", b + i); for (int i = 1; i * i <= k; i++) if (k % i == 0) { ans = madd(ans, check(i, k / i)); if (i * i != k) ans = madd(ans, check(k / i, i)); } cout << ans << endl; return 0; }