博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷——P1154 奶牛分厩
阅读量:6892 次
发布时间:2019-06-27

本文共 1144 字,大约阅读时间需要 3 分钟。

P1154 奶牛分厩

题目描述

农夫约翰有N(1<=N<=5000)头奶牛,每头奶牛都有一个唯一的不同于其它奶牛的编号Si,所有的奶牛都睡在一个有K个厩的谷仓中,厩的编号为0到K-1。每头奶牛都知道自己该睡在哪一个厩中,因为约翰教会了它们做除法,Si MOD K的值就是第i头奶年所睡的厩的编号。

给出一组奶牛的编号,确定最小的K使得没有二头或二头以上的奶牛睡在同一厩中。

输入输出格式

输入格式:

 

第一行一个正整数N,第2到N+1行每行一个整数表示一头奶牛的编号。

 

输出格式:

 

单独一行一个整数表示要求的最小的K,对所有的测试数据这样的K是一定存在的

 

输入输出样例

输入样例#1:
 
5 4 6 9 10 13
输出样例#1:
 
8

说明

Si(1<=Si<=1000000)

 

 

同余定理,我们考虑,a1,a2,若我们需要让他们两个对一个数取膜的余数不同,我们先来考虑当什么时候这两个数取膜后的余数相同呢?我们如果对a2-a1取膜的话,他们的余数最后一定相等等于a1,这里我们假定a2>a1,以此类推,我们就可以求出答案了

#include
#include
#include
#include
#define N 1000010using namespace std;bool check[N];int n,s[N],maxn;int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int main(){ n=read(); for(int i=1;i<=n;i++) s[i]=read(),maxn=max(maxn,s[i]); for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) check[abs(s[i]-s[j])]=true; for(int i=n;i<=maxn;i++) if(!check[i]) { printf("%d",i); return 0; }}

 

转载于:https://www.cnblogs.com/z360/p/7881140.html

你可能感兴趣的文章
css经典布局——圣杯布局
查看>>
Java基础系列五
查看>>
css3常用属性总结(1)
查看>>
SQLServer之创建索引视图
查看>>
面试集锦(六)数据结构(2)
查看>>
VimWiki的一些技巧
查看>>
GMQT全球通用积分重磅推出
查看>>
spring cloud构建互联网分布式微服务云平台-路由网关(zuul)
查看>>
Parasoft dotTEST(10.4.1)更新亮点——在.NET应用程序中构建安全性
查看>>
混沌工程究竟用来解决什么问题?
查看>>
如何写好一片文章
查看>>
vue项目前后端实现
查看>>
BCH升级日期将至,社区组织开始为11月“硬分叉”做准备
查看>>
2018最新版直播系统源码:功能和步骤详解
查看>>
没错,我就是要吹爆Angular
查看>>
Andoid屏幕适配终极手段(小编用过最得劲的dp适配)
查看>>
一张图带你了解Aspose 2019年的产品线
查看>>
一篇关于MySQL server层执行查询语句的注释,非常棒
查看>>
js执行过程之上下文对象(Context)
查看>>
使用迭代器遍历集合出现ConcurrentModificationException的总结
查看>>