返回题解分享
讨论 / 题解分享/ 帖子详情

k倍区间(编程题) - 题解

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'

const int N = 1e5 + 10;

int n, k;
int a[N];
int cnt[N];

void solve()
{
	cin >> n >> k;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
		a[i] += a[i - 1];
	}

	int res = 0;
	cnt[0] = 1; // 区间长度可以是1,余数为0表示可以被自身整除,也算一种
	for (int i = 1; i <= n; i++)
	{
		res += cnt[a[i] % k];
		cnt[a[i] % k]++; // 余数为a[i] % k的数的个数+1
	}
	cout << res << endl;
}

signed main()
{
	std::ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);

	solve();

	return 0;
}
0 回复 0 转发 0 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!