如果一个数组满足长度至少是 22 ,并且其中任意两个不同的元素 A_iAi​ 和 A_j (i \not = j)Aj​(i​=j) 其和 A_i+A_jAi​+Aj​ 都是 KK 的倍数,我们就称该数组是完美 KK 倍数组。

现在给定一个包含 NN 个整数的数组 A = [A_1, A_2, ... A_N]A=[A1​,A2​,...AN​] 以及一个整数 KK,请你找出 AA 的最长的完美子数组 BB,输出 BB 的长度。

如果这样的子数组不存在,输出 -1−1。

输入格式

第一行包含两个整数 NN 和 KK。

第二行包含 NN 个整数 A_1, A_2, ... A_NA1​,A2​,...AN​。

1 \le N \le 1000001≤N≤100000

1 \le A_i, K \le 10000000001≤Ai​,K≤1000000000

输出格式

一个整数,表示答案。

输出时每行末尾的多余空格,不影响答案正确性

样例输入

5 3
1 3 2 3 6

样例输出

3

题解:

我原本想的是把每一个输入的数x都取余于k,然后把r[x]++(r是一个map容器,记录x出现的次数),然后k-x与x放在一起不久刚好是k的倍数了吗。。。但是我没有考虑如果x+x不是k的倍数

就比如k==4,如果n==4为1,1,3,3,那么r[1]=2,r[3]=2,那么这个集合长度不能为4只能为2,因为如果集合长度为4,那么1+1=2就不是4的倍数

所以如果r[x]>0且r[k-x]>0,那么集合长度最小为2.要特别注意一下r[0],和当k为偶数时r[k/2],这两个单独自己就可以构成k倍数组

代码:

 1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<math.h>
6 #include<vector>
7 #include<queue>
8 #include<map>
9 using namespace std;
10 typedef long long ll;
11 const int maxn=1e5;
12 const int INF=0x3f3f3f3f;
13 map<ll,ll>r;
14 map<ll,ll>::iterator it;
15 int main()
16 {
17 ll n,k,tmp,maxx;
18
19 cin>>n>>k;
20
21 ll cnt1=0,cnt2=0,flag=0;
22
23 for(ll i=0;i<n;++i){
24
25 cin>>tmp;
26
27 int t=tmp%k;
28
29 if(t==0) r[t]++,maxx=max(maxx,r[t]);
30
31 else if(2*t%k==0) r[t]++,maxx=max(maxx,r[t]);
32
33 else if(!flag){
34
35 r[t]=1;
36
37 if(r[k-t]) flag=1;
38
39 }
40
41 }
42 if(maxx<2 && !flag) cout<<-1<<endl;
43 else if(maxx>=2) cout<<maxx<<endl;
44 else cout<<2<<endl;
45 return 0;
46 }

最新文章

  1. 「Ionic」創建新項目
  2. 九度oj 题目1034:寻找大富翁
  3. Js中各类型数据到bool的转换
  4. hdu 5713(状态压缩DP)
  5. QTREE2 spoj 913. Query on a tree II 经典的倍增思想
  6. ANDROID_MARS学习笔记_S01原始版_005_RadioGroup\CheckBox\Toast
  7. POJ 3267 The Cow Lexicon 简单DP
  8. SQL操作(增删改查)
  9. c语言筛选质数
  10. C#递归树
  11. shell:监控进程运行状态并自动重启进程
  12. SSH框架通过JFreeChart实现柱状图和获取项目路径
  13. latch session allocation
  14. Linux学习——Shell基础
  15. 微信小程序开发之picker选择器组件用法
  16. 【一天一道LeetCode】#108. Convert Sorted Array to Binary Search Tree
  17. 理解es6 中 arrow function的this
  18. 搭建MHA测试
  19. 数据库---mysql的介绍和安装
  20. keystone令牌三种生成方式

热门文章

  1. Desired_Capabilities配置
  2. ctfhub技能树—信息泄露—备份文件下载—.DS_Store
  3. 使用yaml配置文件管理资源
  4. 【一天一个知识点系列】- Http之状态码
  5. CS_WHERE_USED_MAT 反查BOM的成品CS15
  6. [Usaco2007 Feb]Cow Party
  7. [Usaco2007 Jan]Balanced Lineup 飞盘比赛
  8. 1V转5V芯片,三个元件即可组成完整的稳压方案
  9. ABP vNext 实现租户Id自动赋值插入
  10. JavaScript中函数的定义!