数列(NOIP17提高模拟训练11)

给你一个长度为N的正整数序列,如果一个连续的子序列,子序列的和能够被K整
除,那么就视此子序列合法,求原序列包括多少个合法的连续子序列?
对于一个长度为8的序列,K=4的情况:2, 1, 2, 1, 1, 2, 1, 2 。它的答案为6,子序列
是位置1->位置8,2->4,2->7,3->5,4->6,5->7。

输入格式:

第一行:T,表示数据组数
对于每组数据:
第一行:2个数,K,N
第二行:N个数,表示这个序列

输出格式:

共T行,每行一个数表示答案

样例输入:

2
7 3
1 2 3
4 8
2 1 2 1 1 2 1 2

样例输出:

0
6

数据范围:

100%数据满足
1<=T<=20
1<=N<=50000
1<=K<=1000000
序列的每个数<=1000000000
30%数据满足
1<=T<=10
1<=N,K<=1000

和上次写的思路是一样的,这里不多阐述~

include<bits/stdc++.h>
using namespace std;

int book[2301000];

int main()
{
    int t;
    ios::sync_with_stdio(false);
    cin>>t;
    while(t--)
    {
        long long k,n;
        memset(book,0,sizeof(book));
        cin>>k>>n;
        long long sum=0;
        long long x;
        long long ans=0;
        for(int i=1;i<=n;i++)
        {
            cin>>x;
            sum=(sum+x)%k;
            book[sum%k]++;
        }
        for(int i=0;i<=k-1;i++)
            ans+=book[i]*(book[i]-1)/2;
        cout<<ans+book[0]<<endl;
       }
    return 0;
}

  

时间: 2024-08-27 09:34:49

数列(NOIP17提高模拟训练11)的相关文章

模拟 (NOIP17提高模拟训练11六边形)

棋盘是由许多个六边形构成的,共有5种不同的六边形编号为1到5,棋盘的生成规则如下:1.从中心的一个六边形开始,逆时针向外生成一个个六边形.2.对于刚生成的一个六边形,我们要确定它的种类,它的种类必须满足与已生成的相邻的六边形不同.3.如果有多个种类可以选,我们选择出现次数最少的种类.4.情况3下还有多个种类可以选,我们选择数字编号最小的.现在要你求第N个生成的六边形的编号?前14个六边形生成图如下: 输入格式: 第一行:T,表示数据组数接下来T行,每行一个数:N,表示第N个六边形 输出格式: 共

记忆化搜索(游戏NOIP17提高模拟训练11)

Alice和Bob在玩一个游戏,游戏是在一个N*N的矩阵上进行的,每个格子上都有一个正整数.当轮到Alice/Bob时,他/她可以选择最后一列或最后一行,并将其删除,但必须保证选择的这一行或这一列所有数的和为偶数.如果他/她不能删除最后一行或最后一列,那么他/她就输了.两人都用最优策略来玩游戏,Alice先手,问Alice是否可以必胜? 输入格式: 第一行:T,表示数据组数对于每组数据的第一行:N接下来N行,每行N个数,描述这个矩阵 输出格式: 如果Alice必胜输出W,否则输出L 样例输入:

树形dp(数字转换NOIP17提高模拟训练4)

如果一个数x的约数和(不包括它本身,下同)比它本身小,那么x可以变成它的约数和:如果对于某个y>x且y的约数和为x,那么x也可以变成y.例如,4可以变为3,1可以变为7.限定所有的数字变换在不超过n的正整数范围内进行,求不断进行数字变换且没有重复数字出现的最多变换步数. 输入一个正整数n. 输出最少需要花费的时间. 样例输入: 7 样例输出: 3 这是网上抄来的解析:如果x和y可以互相转化,就连接一条无向边,最后得到的图其实是一个森林,每棵树都是无根树,其实就是要求,整个森林中两个连通的点的最远

XJOI模拟训练11 - B.Rcomb

B.Rcomb 题目描述 : Na老师有\(N\)张卷子排成一列,第i张卷子有其难度\(V_i\),由于X爷的出现,Na老师需要将这些卷子合并为1张.每次Na老师以相等的概率随机选择两张相邻卷子,消耗两张卷子难度和的体力,得到一张难度为两张卷子难度和的卷子,求 Na老师需要消耗的体力期望值. 输入格式 : 第一行:一个整数\(N\). 第二行:\(N\)个整数\(V_1.V_2.....V_N\). 输出格式 : 只有一行,一个小数ANS(小数点后保留5位)表示Na老师需要消耗的体力期望值. 数

sql的简单提高效率方法

少用in操作(效率极差),尽量用表关联代替 尽量有where(减少读取量),where操作列尽量有索引(加快查询) (mysql索引使用B-Tree数据结构对特定列额外组织存放,加快存储引擎查找记录的速度,不需回表查询数据的就是聚簇索引(索引和数据存放在一起).通常是需要回表再查数据,需要消耗额外的磁盘IO.) 主键是特殊的唯一索引(不含null),唯一索引更好用 复合索引设计合理,比多列索引强.因为多列索引在where中引用时,列顺序非常重要,要满足最左前缀列,左边优先,不一定能构建合理的索引

【实数系统】 02 - 实数构造

人们在工作和生活中熟练地使用着数,只要按照运算律进行计算,就不用怀疑结果是否正确.面对着那些似乎天经地义的运算法则,一般人根本不会多想,更看不出什么花样来.即使是碰到了似是而非的概念,大部分人也是选择视而不见,因为它们似乎并不影响最终的结果.然而数作为大自然的语言,数学家们并不甘心只是把它当做一般的对话工具,而是想通过它与世界进行更深层次的交流,并将其转变成探索世界的武器. 事实证明,对于简单问题的深入思考,有时候颠覆人们的传统认识,数学史上的重大发现很多都来自一些“基本问题”,并且新理论总会让

直接序列扩频通信(DSSS)

一.接序列扩频通信原理         直接序列扩频通信开始出现于第二次世界大战,是美军重要的无线保密通信技术.现在直扩技术被广泛应用于包括计算机无线网等许多领域. 直接序列扩频(Direct Sequence Spread Spectrum)系统是将要发送的信息用伪随机码(PN码)扩展到一个很宽的频带上去,在接收端,用与发端扩展用的相同的伪随机码对接收到的扩频信号进行相关处理,恢复出发送的信息. 它直接利用具有高码率的扩频码系列采用各种调制方式在发端扩展信号的频谱,用相同的扩频码序在收端去进行

13个SQL优化技巧

1 避免无计划的全表扫描<!--?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /--> 如下情况进行全表扫描: - 该表无索引 - 对返回的行无人和限制条件(无Where子句) - 对于索引主列(索引的第一列)无限制条件 - 对索引主列的条件含在表达式中 - 对索引主列的限制条件是is (not) null或!= - 对索引主列的限制条件是like操作且值是一个bind va

【转】4G18的低成本NA玩法

首先是要再次强调一次,4G18的缸径是76MM,冲程是87.5MM.属于典型的长冲程低转发动机! 这种设计的优点是比较适合市区走停的工作状况,省油. 如果要针对改装方案而言因为这种低转时便可输出大扭矩的设计,本来是很适合用小涡轮推低增压的改装方式. 可以在极低的转速下爆发出惊人的扭力,尽管0-100的成绩不会非常优异,但其实这个数据并没太大意义的,实际驾驶感觉是很低的转速便可以档档有力.随时爆发强大的加速能力. 不过毕竟上涡轮的资金和技术门槛还是比较高,并不是所有人能接受的. 如果资金允许,技术