51nod1103 抽屜原理

2022-02-20 00:49:07 字數 670 閱讀 4822

題意:中文題誒~

思路:抽屜原理

對於兩個數a, b, 若a=b(modx),那麼(a-b)%x=0;

所以求滿足題意的數列,我們可以在連續子串行裡面找到.

證明:我們用num[i]儲存a[i]的字首和mod n的值,我們有n個字首和,其mod n的值有1~n-1 n-1種可能(如果為0的話說明第1個元素到第i個元素的和是n的倍數啦),由抽屜原理可知,必定至少有兩個值是相同的,也就是說我們可以從連續子串行中找到滿足題意的數列;

那麼我們只要標記num[i]在之前是否出現過就好了啦。。。

**:

1 #include 2

#define maxn 50010

3#define ll long long

4using

namespace

std;56

inta[maxn], vis[maxn];

7ll num[maxn];89

int main(void)18

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

24return0;

25 }else

if(vis[num[i]])

30return0;

31 }else34}

35return0;

36 }

51nod1103 抽屜原理 N的倍數

我感覺這種題就是思維。給定n個數,要求取多少個,他們的和為n的倍數。維護字首和。取模有可加性 如果mod等於0,那就從頭到尾輸出。否則的話,n個數的mod 範圍在1 n 1之間,肯定有兩個數的mod一樣,那他們的差值就是結果。n個數,可以再多,但是如果和為x的倍數,這個大於n,那麼就不行了。incl...

51nod 1103 鴿巢原理

思路 這道題嘛有些彎還是要轉的,比如你說讓你搞n的倍數,你別老老實實照她的意思去啊,倍數可以除法,取膜 因為n個數我們可以求字首和然後取膜,對n取膜的話有0 n 1種情況,所以方案一定是有的,說的好聽一點就是因為鴿巢原理,如果取膜 0那直接輸出,如果有兩種相等的,減一下輸出就好了,一定會存在,而且不...

51nod 1103 鴿巢原理

思路 這道題嘛有些彎還是要轉的,比如你說讓你搞n的倍數,你別老老實實照她的意思去啊,倍數可以除法,取膜 因為n個數我們可以求字首和然後取膜,對n取膜的話有0 n 1種情況,所以方案一定是有的,說的好聽一點就是因為鴿巢原理,如果取膜 0那直接輸出,如果有兩種相等的,減一下輸出就好了,一定會存在,而且不...