Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
32366 | 申东铉 | 【S】T1 | C++ | 解答错误 | 90 | 219 MS | 9632 KB | 1051 | 2024-09-08 16:12:25 |
#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[1000006]; 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[1000006]; 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; }