发布时间: 2017年6月24日 20:27   最后更新: 2017年7月3日 09:27   时间限制: 3000ms   内存限制: 128M

描述

某知名高校有n个学生,每个学生有一个唯一ID。但这些ID有7位数字,学生总是记不住,于是学校想了一个办法。它们将所有ID对m取模作为学生的新ID。显然,取模后要保证这些ID仍不相同。校长听说参加西安交通大学ACM培训的学生能帮忙解决这个问题,于是他想请你算一算m最小是多少。

输入

仅包含一组数据。
第一行一个正整数n(n<=5000),表示该校学生个数。
第二行有n个整数,每个整数表示一个学生ID。

输出

一个正整数,表示m最小值。

样例输入1

3
2017703
2017704
2017706

样例输出1

4

我觉得这道题目挺难得,耗了我不少时间。

我们这样考虑,怎样才能算取模之后学号仍然重复呢,也就是说idx%m == idy%m

也就是说m为abs(idx-idy)的因数

所以说

我们用两层for循环,找出两两学号的差,并把它在数组的相应位置打上标记(由于所有的学号都是7位,因此,差一定小于1e7,所以数组最大开到1e7就可以了)

然后我们从n到1e7遍历模数,对于每个模数m,判断它的倍数中有没有被打过标记的,如果有,说明这个模数不可行。(我好菜,就这里想了好久。。。。,我一开始的错误想法是想把两两的差进行质因数分解,这显然是不行的,因为时间复杂度太高了!!!)

这种方案时间复杂度应该是O(1e7 log(1e7))

代码:

#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
int n;
LL a[5005];
const int MAXN = 1e7 + 7;
int st[MAXN];
int cnt = 0;
int main(){cin>>n;for(int i = 0 ;i < n;i++){scanf("%lld",&a[i]);}for(int i = 0;i < n;i++){for(int j = 0;j < n;j++){if(i != j){int d = abs(a[i] - a[j]);st[d] = 1;}}}for(int i = n;i < MAXN;i++){int f = 1;for(int t = i;t < MAXN;t += i){if(st[t]){f = 0;break;}}if(f){cout<<i<<endl;break;}}return 0;
}

2017西安交大ACM小学期数论 [更新学号]相关推荐

  1. 2017西安交大ACM小学期数论 [水题]

    水题 发布时间: 2017年6月25日 14:06   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M 描述 平均因数个数的统计对于估算数论题目复杂 ...

  2. 2017西安交大ACM小学期数论 [等差数列]

    等差数列 发布时间: 2017年6月25日 13:42   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M 描述 给定正整数n,试问存在多少个和为n ...

  3. 2017西安交大ACM小学期数论 [完全平方数]

    完全平方数 发布时间: 2017年6月24日 17:01   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M 描述 给定正整数b,求最大的整数a,使 ...

  4. 2017西安交大ACM小学期数论 [阅兵式]

    阅兵式 发布时间: 2017年6月25日 12:53   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M 描述 阅兵式上,将士们排成一个整齐的方阵, ...

  5. 2017西安交大ACM小学期 敏感词汇[AC自动机]

    敏感词汇 发布时间: 2017年7月5日 00:23   最后更新: 2017年7月6日 14:40   时间限制: 1500ms   内存限制: 128M 描述 我们知道,在进行聊天时,有些词汇是敏 ...

  6. 2017西安交大ACM小学期 选择困难症[折半枚举+二分查找]

    选择困难症 发布时间: 2017年7月4日 12:44   最后更新: 2017年7月4日 12:45   时间限制: 5000ms   内存限制: 128M 描述 GG有严重的选择困难症. 早上起床 ...

  7. 2017西安交大ACM小学期 刷墙[折半枚举+异或]

    刷墙 发布时间: 2017年7月3日 12:17   最后更新: 2017年7月6日 22:29   时间限制: 3000ms   内存限制: 128M 描述 小明有一面黑白混搭的墙,他想给把墙重新粉 ...

  8. 2017西安交大ACM小学期 美妙音乐[差分KMP匹配]

    美妙音乐 发布时间: 2017年7月3日 13:14   最后更新: 2017年7月5日 13:47   时间限制: 500ms   内存限制: 128M 描述 一段音乐是由若干个音符组成的,音乐中的 ...

  9. 2017西安交大ACM小学期 有趣异或[Trie树]

    有趣异或 发布时间: 2017年7月4日 23:59   最后更新: 2017年7月5日 14:56   时间限制: 1500ms   内存限制: 512M 描述 给定n个非负整数,保证这些数两两不相 ...

最新文章

  1. java B2B2C springmvc mybatis多租户电子商城系统(三):服务提供与调用
  2. 面向过程与面向对象引入三大特性事务
  3. 哪里有mysql认证_国内哪个城市可以考mysql认证
  4. 教自己如何的口若悬河
  5. oracle技术之Oracle 物化视图(一)
  6. 23种设计模式(十一)对象性能之单件模式
  7. 列出场景对象Lightmap属性
  8. 极客大学产品经理训练营 产品思维和产品意识(上) 第3课总结
  9. toshiba linux 打印机驱动的资料
  10. iPhone7 plus分辨率行不行
  11. braintechnology知识星球
  12. 请你讲讲wait方法的底层原理
  13. 【Marschner模型】Light Scattering from Human Hair Fibers人类头发纤维的光照散射
  14. ElasticSearch的scroll分批查询
  15. For Developer-友盟+官网体验升级的打开方式
  16. 【毕业设计】深度学习实现行人重识别 - python opencv yolo Reid
  17. Flink+Iceberg搭建实时数据湖实战
  18. 面向对象_猫狗案例分析
  19. UltraEdit 快捷键操作
  20. 物联网技术周报第 126 期: 使用 Yocto 构建 Raspberry Pi 系统

热门文章

  1. 网络被屏蔽了怎么办_预埋的网线不够长,怎么办?
  2. 对象数组参数_【JavaScript 教程】标准库—Array 对象
  3. java当中用UDP实现相互交流
  4. sprintf()函数的使用
  5. 2021年度训练联盟热身训练赛第五场 H题In-place Sorting+贪心构造
  6. mysql 剔除不可见字符_不可见字符,Excel里最隐蔽的坑
  7. 随机梯度下降的实现细节
  8. 小 Q 与树(dsu on tree + segment tree)牛客练习赛 81 D
  9. 【康复训练】[国家集训队] calc【dp】【拉格朗日插值】
  10. Loj #6077. 「2017 山东一轮集训 Day7」逆序对