解题报告 之 POJ2769 Reduced ID Numbers

解题报告 之 POJ2769 Reduced ID Numbers

Description

T. Chur teaches various groups of students at university U. Every U-student has a unique Student Identification Number (SIN). A SIN s is an integer in the range 0 ≤ s ≤ MaxSIN with MaxSIN = 10 6-1. T. Chur finds this range of SINs too large for identification
within her groups. For each group, she wants to find the smallest positive integer m, such that within the group all SINs reduced modulo m are unique.

Input

On the first line of the input is a single positive integer N, telling the number of test cases (groups) to follow. Each case starts with one line containing the integer G (1 ≤ G ≤ 300): the number of students in the group. The following G lines each contain
one SIN. The SINs within a group are distinct, though not necessarily sorted.

Output

For each test case, output one line containing the smallest modulus m, such that all SINs reduced modulo m are distinct.

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;
}

嗯,开始了同余方程。

时间: 2024-10-05 08:31:45

解题报告 之 POJ2769 Reduced ID Numbers的相关文章

POJ2769 Reduced ID Numbers【同余定理】

题目链接: http://poj.org/problem?id=2769 题目大意: 有N个学生,每个学生有一个唯一的学生证号(0~10^6),但是为了学生证号的范围有点大, 所以希望找到一个最小的正整数M,使得所有学生的学生证号对模M均不同余.那么问题来 了:这个M是多少. 思路: 将M从1开始测试,把所有学生证号对M取余的结果存起来,如果发现有相同的结果,就增 大M的值继续测试,直到满足所有学生的学生证号对M均不同余. AC代码: #include<iostream> #include&l

POJ 2769 Reduced ID Numbers 同余定理

Reduced ID Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8989 Accepted: 3610 Description T. Chur teaches various groups of students at university U. Every U-student has a unique Student Identification Number (SIN). A SIN s is an

poj 2769 Reduced ID Numbers(memset使用技巧)

Description T. Chur teaches various groups of students at university U. Every U-student has a unique Student Identification Number (SIN). A SIN s is an integer in the range 0 ≤ s ≤ MaxSIN with MaxSIN = 106-1. T. Chur finds this range of SINs too larg

POJ 2769 Reduced ID Numbers (同余)

Reduced ID Numbers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9153   Accepted: 3675 Description T. Chur teaches various groups of students at university U. Every U-student has a unique Student Identification Number (SIN). A SIN s is

POJ 2769 Reduced ID Numbers

思路: 枚举 Reduced ID Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8847 Accepted: 3552 Description T. Chur teaches various groups of students at university U. Every U-student has a unique Student Identification Number (SIN). A SIN s

Reduced ID Numbers (memset 的关键用处)

Description T. Chur teaches various groups of students at university U. Every U-student has a unique Student Identification Number (SIN). A SIN s is an integer in the range 0 ≤ s ≤ MaxSIN with MaxSIN = 106-1. T. Chur finds this range of SINs too larg

USACO Section2.2 Runaround Numbers 解题报告 【icedream61】

runround解题报告------------------------------------------------------------------------------------------------------------------------------------------------[题目] 给你一个数M,找出第一个比它大的循环数. 循环数:不包括0.没有重复数字,并且有循环性质的正整数. 循环性质:以81362为例 1.找到最高位,是8,那么往下数8位,依次是1,3

解题报告【pat-1076】

最近一直在忙项目都没时间好好总结写博客,说起来真实惭愧啊. 下面就把自己最近做的几题好好总结一下,主要记录一些注意点,以防以后遇到再犯. 1076. Forwards on Weibo (30) 时间限制 3000 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Weibo is known as the Chinese version of Twitter.  One user on Weibo may have many

洛谷OJ P1141 01迷宫 解题报告

洛谷OJ P1141 01迷宫 解题报告 by MedalPluS [题目描述]    有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上.你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身).   [输入描述]   输入的第1行为两个正整数n,m.  下面n行,每行n个字符,字符只可能是0或者1,字符之间没有空格.  接下来m行,每行2个用空格分隔的正整数i,j,对