我的程式設計挑戰之報數問題

2021-06-20 01:25:18 字數 1041 閱讀 1341

題目描述:有n個人編號1-n,按照順時針方向圍成乙個圓圈。它們預先定義好兩個整數x,y。先從1號順時針方向開始報數,報到x的人出圈,再從x的逆時針方向的後乙個人從1開始報數,報到y的人出圈,再從這個人的順時針方向後乙個人開始從1報數,報到x的人出圈,如此反覆,直到最後剩下乙個人為止,問最後剩下的那個人是幾號? 比如n = 10, x = 3, y = 2,報數的過程如下 報數人 1, 2, 3  3出圈 報數人 2,1       1出圈 接著2,4 ,5       5出圈 接著4,2          2出圈 接著4,6,7       7出圈 接著6,4         4出圈 接著6,8,9      9出圈 接著8,6         6出圈 接著8,10,8    8出圈 剩餘 10號。 輸入n,x,y輸出剩餘的編號。 資料範圍 1 < n <= 1000000,   1<=x,y<=1000000000。

我的**如下:

思想是,先建立乙個鍊錶,每次按要求從中刪除乙個,當然這樣可以很確定刪除的是哪乙個,最後剩下的那個就是所求結果。

using

system

; using

system.collections.generic

; public

class

test

個,數字為",ti,ln[ti]);

ln.removeat(ti

); n=n

-1; if(ti

>0)

ti--;

elseti=

n-1;

} else

個,數字為",ti,ln[ti]);

ln.removeat(ti

); n

--; if(

ti>=n)

ti=ti-

n;} }

returnln[

0];}

我本來以為這樣耗時也就是o(n),當時沒有想到對list進行操作是很費時間的,根據下標訪問某個元素的耗時也是o(n),因此上述演算法就變成了o(n^2),因此提交沒有通過。

看到某高手的文章,才恍然大悟,原來還可以這樣!

我的程式設計挑戰心路

從約10天前開始,發現了csdn上的程式設計挑戰專案,從此幾天就沒有過上過好日子。編 是個熬人的東西。裡面的多數題目還真不是把算出來就行的,對時間複雜度和空間複雜度都有嚴格要求。一些題目自己費了老勁程式設計,試了一些例子也還都能通過,提交的時候卻被很客氣的提示 運算超時 那個鬱悶啊,都以為是 自己出...

我這遲來的微控制器程式設計挑戰

看了挑戰後,就想看看自己是否有60 了。但想好久都沒有寫,因c語言很久沒用了,也因思路不清就放下了,看了下大蝦們推薦的狀態機,有了點思路。但最近要找實習單位就一直沒寫,今天突然想起就試試,除錯下行了。哈哈。還有我最近一直糾結於是選plc還是微控制器發展。不知道該走那條路呀?選擇微控制器,下學期就要實...

反轉 開關問題 挑戰程式設計競賽

例題2例題3 農場主約翰把他的 n 1 n 5,000 頭奶牛排成一排,很多都是面向前方的,就像好奶牛一樣。然而,有些人是面向過去的,而他需要所有人都面向未來,以使他的生活變得完美。幸運的是,fj最近買了一台自動翻牛機。因為他購買的是折扣型,所以必須一次性轉 k 1 k n 頭,且只能轉排在一起的奶...