当前位置: 首页> 文旅> 艺术 > 外贸建站公司排名_自己开发游戏需要学什么_西安优化外包_武汉seo优

外贸建站公司排名_自己开发游戏需要学什么_西安优化外包_武汉seo优

时间:2025/7/9 12:46:45来源:https://blog.csdn.net/zqystca/article/details/145911730 浏览次数:0次
外贸建站公司排名_自己开发游戏需要学什么_西安优化外包_武汉seo优

P8649 [蓝桥杯 2017 省 B] k 倍区间 - 洛谷

题目描述

给定一个长度为 N 的数列,A1​,A2​,…,AN​,如果其中一段连续的子序列 Ai​,Ai+1​,…,Aj​(i≤j) 之和是 K 的倍数,我们就称这个区间 [i,j] 是 K 倍区间。

你能求出数列中总共有多少个 K 倍区间吗?

输入格式

第一行包含两个整数 N 和 K (1≤N,K≤105)。

以下 N 行每行包含一个整数 Ai​ (1≤Ai​≤105)。

输出格式

输出一个整数,代表 K 倍区间的数目。

输入输出样例

输入 #1

markdown

5 2
1
2
3
4
5

输出 #1

markdow

6

说明/提示

时限 2 秒,256M。蓝桥杯 2017 年第八届

思路:

前缀和+同余定理

代码如下:
 

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll; 
const int N = 1e5+10;
ll a[N],pre[N],cnt[N];
int main() 
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);ll n,k;cin >> n >> k;for(ll i = 1 ; i <= n ; i++){cin >> a[i];pre[i] = (pre[i-1] + a[i])%k;cnt[pre[i]]++;}cnt[0]++;ll ans = 0;for(ll i = 0 ; i < k ; i++){ans += cnt[i]*(cnt[i] - 1)/2;	}   cout << ans;return 0;
}

关键字:外贸建站公司排名_自己开发游戏需要学什么_西安优化外包_武汉seo优

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: