繞圓圈 刷題

2021-10-08 03:33:48 字數 1051 閱讀 5499

小明報名參加了趣味運動會,運動會遊戲規則如下:在乙個環形跑道上,等距離放置著 n 個小球,小球按照順時針方向從起點開始依次編號為 1 到 n ,在最短時間內取走放在跑道上盡可能多小球的選手獲勝。舉辦方要求每個選手只能按照順時針方向,跳過 m-1 個號碼取後走下乙個小球。如當 n=5 、 m=3 時,小明能夠取走所有的小球,取走的順序依次為 1->4->2->5->3 。當 n=6 、 m=2 時,小明只能取走 3 個小球 1->3->5 。小明想知道在一場比賽中他最多能取走多少小球,當然,小明是知道怎麼做的,但是他忙著補作業,所以這個簡單的問題就交 (shuai guo) 給你了。

輸入資料

輸入資料的第一行為乙個整數 t ,表示有 t 組測試樣例。每組樣例為單獨的一行,包括兩個整數 n 和 m 。

輸出資料

對每一組輸入資料,輸出一行結果 」case #id: m」 ,表示第 id 組資料的結果是 m , id 從 1 開始。

樣例輸入

35 3

6 210 6

樣例輸出

case #1: 5

case #2: 3

case #3: 5

思路:1.求n,m的最大公約數後,用較大的輸入數除最大公約數即可。**用的這個思路。

2.求n,m的最大公倍數後,最大公倍數除最小的輸入數即可。

3.開乙個與球數個數相同的陣列i,設開始位置star = 0,i[0] = 1;

while(true){

start+=m;

if(startid>n-1) startid = startid-n;

if(i[strat-1]==0) i[start-1] = 1;

else   break;

本人試了方法1,3 均ac。

方法1**:

方法3**:

之後輸出sum即可。 

劍指offer刷題 圓圈中最後剩下的數字

目錄 問題重述 思路解析 1 實現 1 思路解析 2 實現 2 題目 0,1,n 1這n個數字排成乙個圓圈。從數字0開始每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。用乙個鍊錶來儲存元素,當遍歷到鍊錶尾部的時候,讓迭代器再次指向頭部,由此形成乙個環。我們就在鍊錶中去遍歷,每次遇到...

刷題刷題 京東

題目 二維陣列為三列多行是陣列,每行存有三個數字,分別用ai,bi,ci標示 當某行的三個數字全都小於另一行的三個數字時,即 ai思路 對於第一列反向排序,保證第一列數從大到小排序。之後用後面的行依次與前面的行進行對比,將無效行的價值置為零。include include includelong l...

刷題 劍指offer之圓圈中最後剩下的數字

題目 有n個人,圍成乙個環,編號為 0 1 2 3 n 1,從第乙個人開始迴圈報數 從1開始 假設數到m的那個人出列,然後從下乙個人繼續數數,數到m出列,以此迴圈,最後那個人為勝利者,求勝利者的編號。這其實就是有名的約瑟夫問題。可以使用陣列或者鍊錶來模擬這n個人,每次刪除第m個人,直到只剩下乙個人為...