P1154 奶牛分厩 题解
看这道题题解比较少,来凑个数
大佬们的题解实在是太高深了 我就写简单一点,方便大家看懂
核心定理:c%b=(a%b+(c+a)%b)%b
也就是说,当k为某两个数之差时,一定会有两头牛住在同一个厩里
所以我们只要求出所有数的差,再从小到大搜索,只要这个数不为任何两头牛的差,就输出
#include<iostream>
#include<cmath>
using namespace std;
int a[1000005],b[1000005]={0};//定义不多说
int main()
{
int i,n,j,k=1;
cin>>n;//输入
for(i=1;i<=n;i++)
cin>>a[i];//输入
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
b[abs(a[i]-a[j])]=1;//把任意两个数的差在b数组中值为1
i=n;//至少n个厩
while(b[i]==1)
i++;//一旦这个数没有出现过就停止
cout<<i;//输出
}