n個數字形成一個圓圈,隔m個數字刪除一個的問題

來源:互聯網
上載者:User

標籤:blog   io   ar   os   for   sp   2014   問題   log   

n個數字(0,1,2,3.。。n)形成一個圓圈,從數字0開始,每次從這個圓圈中刪除第m個數字(第一個為數字本身,第二個為當前的下一個數字)當一個數字刪除後,

從被刪除的下一個繼續刪除第m個數字。


求剩下的最後一個數字。


#include <iostream>#include <list>//n個連續數字形成一個圓圈,從0開始,每次從這個圓圈中刪除第m個數字,當一個數字刪除後,從下一個繼續刪除第m個數字,求最後剩下的數字是多少(第一個為當前數字本身,第二個為下一個)using namespace std;int findlastnum(unsigned int n,unsigned int m){if(n<1||m<1)  return -1;unsigned int i=0;list<int> intarrs;for(i = 0; i < n; i++){intarrs.push_back(i);}list<int>::iterator curr=intarrs.begin();while(intarrs.size() > 1){for(i = 1; i < m ; i++){curr++;if(curr==intarrs.end())  curr=intarrs.begin();}list<int>::iterator next=curr;next++;if(next == intarrs.end())  next = intarrs.begin();intarrs.erase(curr);curr = next;}return *curr;}int main(){int num = findlastnum(4,3);cout<< num <<endl;return 0;}


n個數字形成一個圓圈,隔m個數字刪除一個的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.