藍橋杯 海盜與金幣求java題解 ?

時間 2021-10-19 12:12:34

1樓:小耿

首先,如果不考慮金幣總數,此題有多個解。因為如果一組數符合題意,各項乘以同一係數的另一組數也符合。所以應該先求符合題意的任意一組陣列,再根據總數約5萬來求係數。

按照拿錢順序將海盜排序,0到11。

假設初始時金幣數是a0,a1...a11。

假設最後,所有人手裡都是2的12次方,即4096個金幣。注意這個假設之下求出來的只是臨時結果,需要乘上係數以使總數盡量接近5萬。

倒推上一次,即最後一次分錢之前,因為出錢的是11號,則0至10號海盜手中錢是現在的一半,即2的11次方;扣掉的錢全加給11號海盜,他現在是13乘以2的11次方。

從這裡開始繼續倒推11次分錢過程,回到最初,這個過程中11號海盜的錢不會再增加,只會每次減半。他的錢在最初時是13乘以2的0次方,即13。因此我們求出了a11=13。

再來看10號海盜。剛才倒推了一次時他和他之前的人都一樣,都有2的11次方。而他是被分錢的人。

因此在他被分錢之前,0至9號的錢要再減一半,為2的10次方;10號的錢則是(2+10+13)乘以2的10次方。

注意括號裡這三個數是怎麼來的:

首先是他自己分完後剩餘的錢2的11次方,轉寫成2乘以2的10次方。

其次是他分給0到9號的錢,10個人每人2的10次方。

再次是他分給11號的錢,11號有13乘以2的11次方,其中一半是這次分的,就是13乘以2的10次方。

三項加起來就是25乘以2的10次方。

和剛才一樣,之後的倒推過程中10號的錢只會每次減半。他最初的錢就是25。

a10=25。

這樣我們就能總結出公式了。每個人最初的錢由三項相加而來:自己的2,前面的人數,後面所有人的初始錢數之和。

比如a9,自己有乙個2,前面有9個人,後面兩人分別有25和13個金幣,他的初始錢數就是2+9+13+25=49。

知道公式之後就是乙個for迴圈搞定。

n個海盜分m個金幣問剩下幾個海盜時,方案能夠被通過?

幷州達人 重新思考了一下,假設了只要達到一半的人同意分配方式,那就通過這個分配方式,再次計算,確實得到了1262這個數字。看來題主對題目理解有誤。以下是計算過程 首先,我們按照瘦弱程度給海盜標號,最瘦弱的海盜為1號,其次為2號,以此類推。那麼,先從乙個海盜算起,乙個海盜 只有乙個人的情況下,1號海盜...

如何評價2023年藍橋杯決賽?

1 今年決賽在北京聯合大學,從江蘇到北京的往返路費,在北京兩天半的吃住全部學校付錢,只要獲了獎學校報銷報名費,這可能是我校計算機學生並不多但是參加藍橋杯還是不少的原因吧 2 比賽發的東西不太好吃,反正我只喝了礦泉水。隊友開玩笑說,礦泉水100元 牛奶100元 麵包100元剛好夠報名費300。比賽結束...

藍橋杯軟體學院怎麼樣啊?

齊天大聖 我是2017從藍橋軟體畢業的學生,目前大四已經在公司實習了。藍橋一直秉承著 立人達人,大道至拙 這個主旨來教育我們,從每天的每日一講,一周的週報,一周的回顧檢查,還有育人的人文課,我感覺都很不錯。老師是真的友好,很負責人,講的很通俗易懂,其實我說的這麼多,也沒多大用,可以自己去試聽 旁聽感...