zoukankan      html  css  js  c++  java
  • 洛谷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)

    复习一波数论咯

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

    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
    ",i); return 0;}
        return 0;
    }
    View Code
  • 相关阅读:
    MVC调用SVC无法找到资源解决问题
    动态更改iframe src
    http改成https wcf 配置更改
    Nuget 管理报repositories.config 访问路径被拒绝 解决办法
    如何在水晶报表中动态添加字段
    VS2.0控件之日历《Calendar》C#
    C#操作Excel全源码
    如何向水晶报表数据源中的存储过程传参数……
    公式的典型用途
    水晶报表公式使用必读
  • 原文地址:https://www.cnblogs.com/lyzuikeai/p/7277218.html
Copyright © 2011-2022 走看看