51 nod 1103 N的倍數 鴿巢原理

2021-07-10 16:32:09 字數 789 閱讀 3926

大意:乙個長度為n的陣列a,從a中選出若干個數,使得這些數的和是n的倍數。

例如:n = 8,陣列a包括:2 5 6 3 18 7 11 19,可以選2 6,因為2 + 6 = 8,是8的倍數。

思路:鴿巢原理,先求出字首 和,判斷是不是0,或者記錄下下標,看存不存在q[i].x==q[i-1].x.

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define inf 0x3f3f3f3f

#define eps 1e-8

#define ls l,mid,rt<<1

#define rs mid+1,r,rt<<1|1

const double pi=acos(-1.0);

using namespace std;

struct nodeq[100100];

bool op(node a,node b)

sort(q+1,q+n+1,op);

for(i = 1;i <= n;++ i)

}if(vis)

continue;

for(i = 2; i <= n;++ i)

vis=true;

break;}}

if(!vis)

}return

0;}

51nod 1103 N的倍數 (抽屜原理)

乙個長度為n的陣列a,從a中選出若干個數,使得這些數的和是n的倍數。例如 n 8,陣列a包括 2 5 6 3 18 7 11 19,可以選2 6,因為2 6 8,是8的倍數。input 第1行 1個數n,n為陣列的長度,同時也是要求的倍數。2 n 50000 第2 n 1行 陣列a的元素。0 a i...

51nod 1103 N的倍數 抽屜原理

原題鏈結 1103 n的倍數 ural 1302 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 乙個長度為n的陣列a,從a中選出若干個數,使得這些數的和是n的倍數。例如 n 8,陣列a包括 2 5 6 3 18 7 11 19,可以選2 6,因為2 6 8,是8...

51nod 1103 N的倍數(抽屜定理)

題目 思路 首先明確,輸出任意乙個答案即可 求mod n的字首和,然後如果0就是答案,如果沒有等於0的,考慮mod n結果只能是1 n 1,所以根據抽屜定理 鴿巢定理 若把n個物體放在n 1個抽屜中,至少有乙個抽屜中放了兩個物體 所以肯定有兩個相同的字首和,相減就是結果了 include using...