2017藍橋杯javaC組模擬題5

標題:報數游戲

有 n (1<n<10000)個小朋友站成一個圓圈。
選定一個小朋友為1號,從他(她)開始順時針編號:1,2,3,4,...

游戲開始! 從1號小朋友起,順時針報數,從1報起。
即:1號小朋友報1,2號小朋友報2,3號小朋友報3, ....

游戲規定,報到數字 m(1<m<100) 的小朋友立即退出報數圈。
在他(她)的順時針方向的下一個小朋友(如果有的話)開始重新從1報數...
游戲這樣一直進行下去,直到圈中只剩下一個小朋友。

求最后剩下的小朋友的編號。

輸入:兩個整數,n 和 m, 用空格分開。含義如上。

輸出:一個整數,表示最后剩下的小朋友的編號。

比如:
輸入:
15 3
程序應該輸出:
5

再比如:
輸入:
7 4
程序應該輸出:
2

資源約定:
峰值內存消耗(含虛擬機) < 256M
CPU消耗 < 1000ms

數學解法

static int k=1;
    public static void main(String[] args) {
        

    }
    @SuppressWarnings("unused")
    private static void M1() {
        Scanner input = new Scanner(System.in);
        int int1 = input.nextInt();
        int int2 = input.nextInt();
        int s=0;
        for(int i=2;i<=int1;i++)  
        {  
         s=(s+int2)%i;  
        }  
        System.out.println(s+1);
        input.close();
    }

鏈表解法

    private Integer yueSeFu(int num1, int num2) {
        LinkedList<Integer> list = new LinkedList<Integer>();
        // 初始化數據隊列
        for (int i = 1; i <= num1; i++) {
            list.add(i);
        }
        int book = 1;
        while (list.size() > 1) {
            ListIterator<Integer> it1 = list.listIterator();
            while (it1.hasNext()) {
                it1.next();
                if (book == num2) {
                    it1.remove();
                    book = 1;
                } else {
                    book++;
                }
            }
        }
        return list.get(0);
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 題目:滑動解鎖 滑動解鎖是智能手機一項常用的功能。你需要在3x3的點陣上,從任意一個點開始,反復移動到一個尚未經過...
    LinkedIn閱讀 298評論 0 1
  • 【我是一個集輕文藝與偽學術于一身的小女子!喜歡我就關注我吧!】 課程論的課我跟了一學期又一學期,看著學生們的自我總...
    自由的秋千閱讀 171評論 0 0
  • 1 《如何閱讀一本書》買回來很久了,陸陸續續地翻看了些自己感興趣的章節。但卻從來沒有認真仔細的從頭到尾翻看過一遍。...
    牛牛的Annie閱讀 548評論 0 10
  • 今天看了時間管理第五章,講的玩索而有得。 感受頗深!想到了很多往事,哈哈! 這句話的意思大概是說學習要有像玩耍一樣...
    古月老師閱讀 1,264評論 1 3
  • 10月15號下午,舉辦了廣州第一場正式的減法整理分享會。簡單總結做個活動回顧: 活動參與人數:9人 開始時間:15...
    一如減法整理閱讀 833評論 0 2