題意:中文題誒~
思路:抽屜原理
對於兩個數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那直接輸出,如果有兩種相等的,減一下輸出就好了,一定會存在,而且不...