题目链接:https://www.luogu.com.cn/problem/P1154
如果$a mod c=b mod c$,当且仅当$a-b=0(mod c)$,这是很好理解的。
这道题只需要对任意一对$a_i$,$a_j$作差。如果差都不是k的倍数,那么就是可以的。
AC代码:
1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 using namespace std; 5 const int N=5005; 6 const int M=1e6+5; 7 int n,a[N],vis[M]; 8 int main(){ 9 scanf("%d",&n); 10 for(int i=1;i<=n;i++) scanf("%d",&a[i]); 11 for(int i=1;i<=n;i++) 12 for(int j=i+1;j<=n;j++){ 13 int t=abs(a[i]-a[j]); 14 vis[t]=1; 15 } 16 for(int i=n;i<=1e6;i++){//枚举k 17 if(!vis[i]){ 18 int flag=1; 19 for(int j=i;j<=1e6;j+=i){//j为k的倍数,看在差中是否出现过 20 if(vis[j]){ flag=0; break;} 21 } 22 if(flag){ 23 printf("%d",i); 24 return 0; 25 } 26 } 27 } 28 return 0; 29 }