題意:從輸入的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個東西任意分放進...