题意:给你一组n个数,找到最小的正整数m,是的当前组内的所有树对m取模均不同余
思路:对当前组枚举除数
1.想要都不相同,枚举是从n开始枚举不是从1开始,鸽巢原理小于n个必有相同的
2.memset初始化的时候,用多少初始化多少,memset(a,0,sizeof(int)*(n+1)),直接sizeof(a)会超时
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
using namespace std;
int G[50000];
int n;
bool IsTong(int m)
{
bool flag[1000005];
memset(flag,false,sizeof(bool)*(m+1));
for(int i = 0; i < n; i++)
{
if(!flag[G[i] % m])
flag[G[i] % m] = 1;
else
return false;
}
return true;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i = 0; i < n; i++)
{
scanf("%d",&G[i]);
}
for(int i = n;;i++)
{
if(IsTong(i))
{
printf("%d\n",i);break;
}
}
}
return 0;
}
本文介绍了一个算法问题,即如何找到一个最小的正整数m,使得给定的一组n个整数对m取模后的结果各不相同。通过枚举和鸽巢原理,实现了高效的求解方法。
719

被折叠的 条评论
为什么被折叠?



