这题很水,不求解题时间的话,用STL的set来做是无比的简单,就是时间久一点,但还是能过的,毕竟给了2s。要快的话,我是建立一个hash映射,可以最快的找出是否已经存在相同的余数,是的话则m++,进行下一轮的选择。
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int testcase;
scanf("%d",&testcase);
while (testcase--) {
int n, m, i;
int sin[310];
scanf("%d",&n);
for (i = 0; i < n; i++)
scanf("%d",&sin[i]);
m = n;
while (1) {
bool hash[99999];
memset(hash,false,sizeof(hash));
for (i = 0; i < n; i++) {
if (!hash[sin[i]%m])
hash[sin[i]%m] = 1;
else
break;
}
if (i == n)
break;
m++;
}
printf("%d\n",m);
}
return 0;
}