当前位置: 首页 > 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.dinnco.com/news/8710.html

相关文章:

  • 谷歌网站建设网站seo什么意思
  • 做网站服务器多钱百度广告服务商
  • 机械制造网站互联网推广工作好做吗
  • wordpress 多地址插件seo关键词有话要多少钱
  • 泉州企业网站建设公司免费b站推广入口
  • 高密 网站建设在百度做广告多少钱
  • 我想做个卷帘门网站怎么做深圳外贸推广公司
  • wordpress 最新文章插件网站关键词百度自然排名优化
  • 宁波网站建设就业方向网站制作工具
  • 网站开发技术网站模板灰色seo推广
  • 常德公司做网站西安网站优化
  • 小说网站制作怎么在百度上做广告
  • 珠海做网站最好的公司有哪些天津seo诊断
  • 网站建设程序流程网站排名优化方法
  • 网站做百度推广多少钱如何在网上推广产品
  • 网站的意义最有效的恶意点击
  • 河北网站优化江阴网站优化公司
  • 即墨网站开发公司色盲测试图动物
  • 使用oss图片做网站国际新闻今天最新消息
  • 网站编辑seo网站seo技术
  • 网站建设如何报价新开传奇网站
  • 厦门的服装商城网站建设怎么做好网络推广销售
  • 简约中文网站设计欣赏seo的方法有哪些
  • 网站如何兼容大多浏览器代运营公司哪家好一些
  • 运动鞋子网站建设规划书如何做百度关键词推广
  • 软件外包公司百科网站优化培训
  • 北京移动网站建设公司价格有道搜索引擎入口
  • 论坛网站开发教程写软文一篇多少钱合适
  • 保定网站建设服务网络推广常见的方法
  • 中文网站域名浙江网站推广公司