題意是一群孩子圍成乙個圈,每個人把手中的糖果分一半給右邊的人,若分過之後手中的糖果數是奇數,則由老師提供一顆糖果給他,問這樣傳遞多少圈所有人的糖果數都能相等,最終每人手裡的糖果數是多少。
由於題中已經解釋了結果是有限的數,那麼就直接模擬,要注意分的時候是從前面的人往後面傳遞。
**如下:
1 #include 2view codeusing
namespace
std;
3int n,ans,tmp,t,a[10009],pre[10009];4
bool
judge()511
intmain()
1229
for(int i = 0; i < n; ++i)
3034
for(int i = 0; i < n; ++i)
3539 ++ans;
40if(judge()) break;41
}42 printf("
%d %d\n
",ans,a[0
]);43}44
return0;
45 }
(自己注釋掉的部分沒發現問題在哪,頭好痛......希望知道的大神賜教orz )
hdu1034 簡單模擬
這裡開乙個二維陣列,num 105 2 我也不知道n有多少,隨便開的,那麼這裡num i 0 表示當前 第 i 個人擁有的糖果數,num i 1 表示他上面乙個人分給他的糖果數,具體實現見 注釋 這裡要注意的就是 先給糖果,然後如果有人糖果數為奇數,就加1 然後再判斷是不是相等 上馬 include...
hdu1034(簡單模擬)
模擬的水題 題目是說,n個人坐一圈,開始每個人都有偶數個糖果,如果不相等,老師吹一次哨,每個人就把一半的糖果給右邊的人,如果手裡有奇數個糖果,老師會再給乙個補成偶數,直到所有人糖果數相同。題目知,最後一定能達到相同狀態。多開了乙個陣列,每次全部換完糖果後判斷一次,用了sort從小到大,如果最小的和最...
hdu5961傳遞(bitset亂搞)
hdu5961 題意 中文題題解 1 判斷傳遞的條件為 若g中有 一條邊從a到b且有一條邊從b到c 則g中同樣有一條邊從a到c。2 我們去列舉b,我們假設集合sb 表示有一條 x 指向 b的邊。我們假設集合tb 表示有有一條 b 指向 x的邊。3 我們再去列舉sb 中的元素,假設我們當前列舉的是 x...