当前位置: 首页 > news >正文

重庆营销网站建设平台网上商城系统开发

重庆营销网站建设平台,网上商城系统开发,西安网站建设那家强,龙光城业主论坛家在深圳题目描述 给定一个长度为 NN 的数列,A1,A2,⋯ANA1​,A2​,⋯AN​,如果其中一段连续的子序列 Ai,Ai1,⋯Aj(i≤j)Ai​,Ai1​,⋯Aj​(i≤j) 之和是 KK 的倍数,我们就称这个区间 [i,j][i,j] 是 KK 倍区间。 你能求出数列中总共有多少个 KK 倍区…

题目描述

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

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

输入格式

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

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

输出格式

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

输入输出样例

输入 #1复制

5 2
1  
2  
3  
4  
5  

输出 #1复制

6

说明/提示

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

做法

这题我们用前缀和来写,暴力做法是对于每个右端点,枚举每个左端点,符合的区间就加一,当然,这太暴力了。我们求区间个数一般都是先遍历右端点,然后左端点个数 O(1) 就能求出来了,就是直接查询。

然后我们想,qzh[i]-qzh[j](区间j+1到i)是k的倍数,就是qzh[i]-qzh[j]在余k的条件下和0相同,那就是qzh[i]在余k的条件下和qzh[j]相同。那么,我们枚举右端点,只要有和它的余数相同的,就是符合的左端点。但是这样复杂度并没有降下去。

其实正确做法是,我们知道了0到k-1的每个余数的个数,那么我们就从中选两个,有多少种组合,就有多少个区间。这就用到了组合数。

有一个特殊情况,当余数是0时,单个也是符合条件的,所以要再加上余数是0的个数。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a,k,sum,ans;
map<int,int> mp;
signed main(){ios::sync_with_stdio(0);cin.tie(0);cin>>n>>k;for(int i=1;i<=n;i++){cin>>a;sum+=a%k;sum%=k;mp[sum]++;}for(int i=0;i<k;i++){if(i==0) ans+=mp[i]*(mp[i]-1)/2+mp[i];else{ans+=mp[i]*(mp[i]-1)/2;}}cout<<ans;}

http://www.yayakq.cn/news/678339/

相关文章:

  • 专门做黄昏恋的网站seo查询网站
  • 长沙企业网站建立ui设计是做啥的
  • 三角镇建网站公司python做网站快么
  • 买域名做网站wordpress 不显示图片
  • 郑州人才网站学网页设计制作
  • 建设网站域名备案青岛代理记账
  • 合肥建设信息网站中国最好的营销策划公司
  • 温州做网站 掌熊号营销策略论文
  • 广网站建设网站开发公司会计处理
  • 网页播放的视频如何下载沈阳网站优化怎么做
  • 网站建设优化多少钱淘宝店铺怎么引流推广
  • 移动手机网站建设静态网站模板中英文
  • nas 做网站服务器wordpress版本信息在哪里查看
  • vue做网站2018网站内容和备案
  • 网站内容与功能设计与实现的自己做的网站怎么实现结算功能
  • 建设网站文案购物网站前台功能模块分析
  • 旅游网站设计的目的与意义杭州seo联盟
  • 网站开发产品设计公司莱特币做空网站
  • wdcp网站建设中华艺术宫室内设计
  • 网站开发游戏程序开发网站ipv6改造怎么做 网页代码
  • 百度站长平台网站验证成都网站公司网站建设
  • 网站接入商查询贵阳网站开发公司
  • 广州外贸网站建站手把手网站开发
  • 虚拟网站建设步骤木方东莞网站建设技术支持
  • google官网下载安装企业网站seo贵不贵
  • 本科自考哪个专业比较好考咸宁抖音seo收费标准
  • 旅行网站开发需求说明书定制手机网站建设
  • 网站制作背景图片海南网站建设多少钱
  • 网站设计的工作要求邯郸专业做网站地方
  • 南昌seo排名方案seo网上课程