Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
32255 | Aquizahv | 【S】T1 | C++ | 运行出错 | 0 | 0 MS | 248 KB | 1308 | 2024-09-08 13:17:54 |
#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; }