首页 > 其他分享 >【洛谷 8649】 [蓝桥杯 2017 省 B] k 倍区间

【洛谷 8649】 [蓝桥杯 2017 省 B] k 倍区间

时间:2023-10-26 17:11:06浏览次数:35  
标签:洛谷 Ai long 蓝桥 8649 区间 2017 105

题目描述

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

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

输入格式

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

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

输出格式

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

输入输出样例

输入 #1
5 2
1  
2  
3  
4  
5  
输出 #1
6

说明/提示

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

题解:没开longlong老错一个点,运用到同余定理:如果a%k==b%k 则由|a-b|%k==0

#include<bits/stdc++.h>
using namespace std;
const int N=100003;
long long a[N],n,k,ans;
long long sum;
long long b[N];
int main(){
    freopen("8649.in","r",stdin);
    freopen("8649.out","w",stdout);
    scanf("%lld %lld",&n,&k);
    b[0]=1;
    for(int i=1;i<=n;i++){
        scanf("%lld",&a[i]);
        sum=(sum+a[i])%k;
        b[sum]++;
    }
    /*for(int i=0;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            if((f[j]-f[i])%k==0) ans++;*/
    for(int i=0;i<k;i++){
        ans+=(b[i]*(b[i]-1))/2;
    }
    printf("%lld",ans);
    return 0;
}

 

标签:洛谷,Ai,long,蓝桥,8649,区间,2017,105
From: https://www.cnblogs.com/wuhu-JJJ/p/17789862.html

相关文章

  • 【每日例题】 蓝桥杯 c++ 考勤刷卡
    考勤刷卡题目小蓝负责一个公司的考勤系统,他每天都需要根据员工刷卡的情况来确定每个员工是否到岗。当员工刷卡时,会在后台留下一条记录,包括刷卡的时间和员工编号,只要在—天中员工刷过—次卡,就认为他到岗了。现在小蓝导出了—天中所有员工的刷卡记录,请将所有到岗员工的员工......
  • 【洛谷 8742】[蓝桥杯 2021 省 AB] 砝码称重
    题目描述你有一架天平和 �N 个砝码,这 �N 个砝码重量依次是 �1,�2,⋯ ,��W1​,W2​,⋯,WN​ 。请你计算一共可以称出多少种不同的重量?注意砝码可以放在天平两边。输入格式输入的第一行包含一个整数 �N 。第二行包含 �N 个整数: �1,�2,�3,⋯ ,��W1​,W2​,W3​,⋯,WN​......
  • 【洛谷 2347】[NOIP1996 提高组] 砝码称重
    题目描述设有 1g1g、2g2g、3g3g、5g5g、10g10g、20g20g 的砝码各若干枚(其总重≤1000≤1000),可以表示成多少种重量?输入格式输入方式:�1,�2,�3,�4,�5,�6a1​,a2​,a3​,a4​,a5​,a6​(表示 1g1g 砝码有 �1a1​ 个,2g2g 砝码有 �2a2​ 个,…,20g20g 砝码有 �6a6​ 个)输出格式......
  • 【洛谷 8601】 [蓝桥杯 2013 省 A] 剪格子
    #[蓝桥杯2013省A]剪格子##题目描述如图$1$所示,$3\times3$的格子中填写了一些整数。![](https://cdn.luogu.com.cn/upload/image_hosting/hsfjsi38.png)我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是$60$。本题的要求就是请你编程判定:对给定的$m\tim......
  • 【每天例题】蓝桥杯 c++ 卡片
    卡片题目小蓝有k种卡片,—个班有n位同学,小蓝给每位同学发了两张卡片,—位同学的两张卡片可能是同一种,也可能是不同种,两张卡片没有顺序。没有两位同学的卡片都是一样的。小蓝有k种卡片,-个班有n位同学,小蓝给每位同学发了两张卡片,-位同学的两张卡片可能是同一种,也可能是不同种,......
  • 【每日例题】蓝桥杯 c++ 奇数倍数
    奇数倍数题目本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。请你找到最小的整数X同时满足:1.X是2019的整倍数;2.X的每—位数字都是奇数。运行限制·最大运行时间:1s·最大运行内存:128M蓝桥杯奇数倍数题目分析针对这个题目,要判断两个条件:1.这个数......
  • 洛谷P5706 【深基2.例8】再分肥宅水(Python3)
    关键点:1.同一行输入两个数input().split(),然后list一下存到变量里,这个不多说2。输出两个数Python中默认end=‘\n’,所以不用多写一遍换行。3.输出三位小数这里用到了Python的格式化输出,与c++的格式化输出非常相近,只是符号不同。具体可看这篇blog 代码如下:a=list(input(......
  • 洛谷 最长最短单词 c语言 函数解决
    #include<stdio.h>#include<string.h>inti;intmain(){intIs_letters(chara);//声明判断字母intbigword(charstr[]);//声明最长单词intminword(charstr[]);//声明最短单词charstr[20010];//str要足够大intt;gets(str);t......
  • Visual Studio 2017标准库、 Windows SDK 10标准库目录
    VisualStudio2017标准库VC\Tools\MSVC\14.16.27023\include目录包含了VisualC++14.16.27023版本的标准库头文件(也就是VC++2017版本),包括、、等常用头文件。这些头文件定义了各种数据类型、函数、类等,供程序员使用。如果你使用VisualStudio2017或更高版本进行开发......
  • 洛谷5597复读
    具体题解可以看zhy136036那一篇解释一下是如何合并树的每次都可以提取出来一个子树然后把这三棵子树重叠在一起(根对根,2号点对2号点,以此类推),就得到了这个新图然后解释一下为什么这么做是对的首先在单次操作中,至少需要把这个新树给遍历完,不然的话就会存在有些点遍历不到,即这是......