专栏文章
题解:B4105 [CSP-X2024 山东] 消灭怪兽
B4105题解参与者 4已保存评论 3
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @miqmsqh7
- 此快照首次捕获于
- 2025/12/04 07:21 3 个月前
- 此快照最后确认于
- 2025/12/04 07:21 3 个月前
原题链接
解题思路
20pts
我们可以枚举区间左端点 和区间右端点 ,再循环统计 的和并是否是 的倍数,时间复杂度 。
40pts
我们可以使用前缀和算法优化上述统计 的区间和,时间复杂度 。
100pts
我们用 表示 的和,假设有 为 的倍数,即 。
所以我们要计算以 左右区间右端点时的方案数,仅需统计 中与 同余的 的数量即可。
时间复杂度 。
AC_Code
CPP#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 1e6 + 10;
int n, k;
int h[N];
int main()
{
cin >> n >> k;
h[0] ++;
LL s = 0, res = 0;
for (int i = 1; i <= n; ++ i )
{
int x;
cin >> x;
s += x;
res += h[s % k] ++;
}
cout << res << endl;
return 0;
}
相关推荐
评论
共 3 条评论,欢迎与作者交流。
正在加载评论...