poj2356(抽屜原理)

2021-10-19 18:13:28 字數 707 閱讀 3657

題意:從輸入的n個元素中找出是n的倍數的元素並且輸出;

因為這個要求的是連續的數之和,先用sum陣列求和:sum[1]

,sum[1]

+sum[2]

,……,sum[1]

+sum[2]

+……+sum[n]

;因為sum[i]

%n的餘數一定在1

-n之間,所以根據抽屜原理,可以用vis陣列記錄出現的餘數;

因為1-n之間一定存在有兩個餘數相同。

直接上**:

#include

#include

#include

#include

using

namespace std;

const

int maxx=

1e5+10;

int a[maxx]

;int vis[maxx]

;int sum[maxx]

;int

main()

for(

int i=

1;i<=n;i++

)break;}

else

if(vis[sum[i]

%n]!=0)

break;}

vis[sum[i]

%n]=i;}}

return0;

}

POJ 2356 抽屜原理

題目連線 簡單說一下思路吧 首先是n個數,我們可以用乙個陣列s n 來儲存從a 1 到a n 的和 然後我們可以對每乙個s n 進行如下操作 s i s i n 那麼如果我們掃瞄到某乙個s i 0於是就可以得到了乙個解,即從1到i 接下來,如果s i 的值沒有乙個 0那麼根據mod的原則可以知道s ...

練練思維之poj 2356

題意 給你n個數,選取任意個數使得和為n的倍數,如果有多組解,輸出其中一組滿足條件的解就可以了。思路 簡單抽屜原理 字首和處理。顯然假設字首和陣列為sum i 則sum i n一定會分布在 0,n 1 這個含有n個整點的區間上,然後顯然sum 0 0,因此對於sum i n 0 i n 這n 1個數...

經典 抽屜原理

抽屜原理 任意367個人中,必有生日相同的人。從任意5雙手套中任取6只,其中至少有2只恰為一雙手套。從數1,2,10中任取6個數,其中至少有2個數為奇偶性不同。大家都會認為上面所述結論是正確的。這些結論是依據什麼原理得出的呢?這個原理叫做抽屜原理。它的內容可以用形象的語言表述為 把m個東西任意分放進...