程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> POJ2769(同余 + 暴力)

POJ2769(同余 + 暴力)

編輯:關於C++

 

解題思路:

求組內最小的m使得組內各個數對m求余所的值均不同。暴力的判斷吧。發現一個有趣的規律,G++省時間廢內存,C++費時間省內存。另外此題的數組不宜開的過大,我開了個10^6的數組,接下來各種超時,換成10^5就過了。

另外,我試了下用set結果還是超時。

 

完整代碼:

 

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long LL;
const int maxn = 100001;
int a[maxn] , b[maxn];
int n;

inline bool check(int m)
{
    memset(b , 0 , sizeof(b));
    for(int i = 0 ; i < n ; i ++)
    {
        if(b[a[i] % m])
            return false;
        else
            b[a[i] % m] = 1;
    }
    return true;
}

int main()
{

    #ifdef DoubleQ
    freopen(in.txt , r , stdin);
    #endif;
    int T;
    scanf(%d,&T);
    while(T--)
    {
        
        scanf(%d,&n);
        for(int i = 0 ; i < n ; i ++)
            scanf(%d,&a[i]);
        int m;
        for(m = 1 ; m < maxn ; m ++)
        {
            if(check(m))
            {
                printf(%d
 , m);
                break;
            }
        }
    }
    return 0;
}

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved