标签:poj2769 reduced id numbers 数论 同余 acm
Input
Output
Sample Input
2 1 124866 3 124866 111111 987651
Sample Output
1 8
题目大意:给定一些不超过1e6的数字,让你找一个最小的数k,使得给出的数中没有任何两个数对k同余。
分析:解题思路是十分朴素的实验法。直接从1开始试每个数字看看有没有同余的,如果找到同余则break,直到找到一个合适的数为止。但是有一个问题是在C++上超时但在G++上却AC了,不知道其中的奥妙何在,求大神提点。
上代码:
#include<iostream>
#include<algorithm>
#include<cmath>
#include<map>
#include<cstring>
using namespace std;
const int MAXN = 1e5+10;
const int MAXM = 1e6 + 10;
int stu[MAXN];
int m[MAXN];
int main()
{
int kase;
cin >> kase;
while(kase--)
{
//memset( mod, 0, sizeof mod );
int n;
cin >> n;
for(int i = 1; i <= n; i++)
cin >> stu[i];
bool flag;
int i;
for(i = 1; ; i++)
{
memset( m, 0, sizeof m );
flag = true;
for(int j = 1; j <= n; j++)
{
if(m[stu[j] % i] == 1)
{
flag = false;
break;
}
else
m[stu[j] % i] = 1;
}
if(flag)break;
}
cout << i << endl;
}
return 0;
}解题报告 之 POJ2769 Reduced ID Numbers
标签:poj2769 reduced id numbers 数论 同余 acm
原文地址:http://blog.csdn.net/maxichu/article/details/45642653