码迷,mamicode.com
首页 > 其他好文 > 详细

洛谷P1154 奶牛分厩

时间:2017-08-03 00:53:11      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:logs   play   ace   bsp   char   技术分享   奶牛   除法   pac   

题目描述

农夫约翰有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)

复习一波数论咯

——————————————————————————

a mod k=b mod k 等价于k|(a-b)

所以问题变成找出 ai-bj 的所有因数 然后就好辣

技术分享
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=1e6; 
int read(){
    int ans=0,f=1,c=getchar();
    while(c<0||c>9){if(c==-) f=-1; c=getchar();}
    while(c>=0&&c<=9){ans=ans*10+(c-0); c=getchar();}
    return ans*f;
}
int n,f[M+7],id[M];
int main()
{
    n=read();
    for(int i=1;i<=n;i++) id[i]=read();
    sort(id+1,id+1+n);
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            f[id[j]-id[i]]=1;
    for(int i=M;i>=1;i--)
        for(int j=i*2;j<=M;j+=i) 
            if(f[j]){f[i]=1; break;}
    for(int i=1;i<=M;i++) if(!f[i]){printf("%d\n",i); return 0;}
    return 0;
}
View Code

 

洛谷P1154 奶牛分厩

标签:logs   play   ace   bsp   char   技术分享   奶牛   除法   pac   

原文地址:http://www.cnblogs.com/lyzuikeai/p/7277218.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!