poj 2796 Reduced ID Numbers(简单数论)

来源:互联网 发布:淘宝联盟返利低 编辑:程序博客网 时间:2024/04/30 19:48

题目大概说的就是告诉你一组学生的学号,但老师觉得吧记住学生的学号太困难了,就想找到一个最小的数m使得这一组学号对m取余的值都不相同。这样老师就好记住了。

题目水题一道:m从1开始枚举即可。只用在每次判断当前m值产生的余数是否唯一皆可。

#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int Maxsize = 350;const int Maxsizenode = 100010;int main(){    int n,m,data[Maxsize];    bool flag[Maxsizenode];    int cnt = 0;    cin>>n;    while(n--)    {        cin>>m;        memset(data,0,sizeof(int)*m);        for(int i = 0 ; i < m ; i++)        {            cin>>data[i];        }        for(int i = 1 ; ; i++)/*从1开始枚举*/        {            bool k = false;            memset(flag,false,sizeof(flag));            for(int j = 0 ; j < m  ;j++)            {                if(flag[data[j]%i])/*判断取模是否唯一*/                {                    k = true;                    break;                }                else                {                    flag[data[j]%i] = true;                }            }            if(!k)            {                cnt = i;                break;            }        }        cout<<cnt<<endl;    }    return 0;}


原创粉丝点击