試題2---分蘋果

來源:互聯網
上載者:User

標籤:自己   and   ==   break   turn   過程   1.0   code   int   

題目:

果園裡有一堆蘋果,一共n頭(n大於1小於9)熊來分,第一頭為小東,它把蘋果均分n份後,多出了一個,它扔掉了這一個,拿走了自己的一份蘋果,接著第二頭熊重複這一過程,即先均分n份,扔掉一個然後拿走一份,以此類推直到最後一頭熊都是這樣(最後一頭熊扔掉後可以拿走0個,也算是n份均分)。問最初這堆蘋果最少有多少個。

給定一個整數n,表示熊的個數,返回最初的蘋果數。保證有解。

測試範例:

2

返回:

3   


 
def one_pear_operation(m, i, n):    ### 第i+1熊分蘋果之前的蘋果數量
### m為第i只熊分蘋果之前的蘋果數目
### n為熊的總數目 p=float(m*n)/(n-1)+1 t=float(p-1)/n if (not t.is_integer()) and i>0 : ### 每隻熊都應該拿走整數個蘋果,並且只有最後一隻熊被允許拿走0個蘋果扔掉一個蘋果,剩餘0個蘋果 return 1.1 else: return pdef processing(n, p):
### 從最後一隻熊反向推算,如果假設的最後一隻熊拿蘋果之前的蘋果數量不符合要求就遞增1,知道滿足條件為止 s=p flag=1 for i in range(n-1): s=one_pear_operation(s,i,n) if not s.is_integer(): flag=0 break return s, flag def main(n):
### 最後一隻熊分蘋果之前最少還有1個蘋果 p=1.0 while(True): s=p s, flag=processing(n,s) if flag==1 and s>2: print int(s) break else: while(True): p +=1 temp=float(p-1)/n if temp.is_integer(): break if __name__==‘__main__‘: #processing(6,1) main(3) #print s

 

 

 

 

試題2---分蘋果

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.