百練–2746–約瑟夫問題

來源:互聯網
上載者:User
2746:約瑟夫問題
  • 查看
  • 提交
  • 統計
  • 提示
  • 提問
總時間限制:
1000ms
記憶體限制:
65536kB
描述
約瑟夫問題:有n只猴子,按順時針方向圍成一圈選大王(編號從1到n),從第1號開始報數,一直數到m,數到m的猴子退出圈外,剩下的猴子再接著從1開始報數。就這樣,直到圈內只剩下一隻猴子時,這個猴子就是猴王,編程求輸入n,m後,輸出最後猴王的編號。

輸入
每行是用空格分開的兩個整數,第一個是 n, 第二個是 m ( 0 < m,n <=300)。最後一行是:

0 0

輸出
對於每行輸入資料(最後一行除外),輸出資料也是一行,即最後猴王的編號
範例輸入
6 212 48 30 0
範例輸出
517
 

 

//#include <iostream>#include <stdio.h>#include <stdlib.h>//using namespace std;struct node {int num;node * next;};void initqueen(int n,node * queen){int i;node *r,*s;r=s=queen;for(i=2;i<=n;i++)//2到 n結點{s = (node *)malloc(sizeof(node));s->num = i;s->next = NULL;r->next = s;r = s;//printf("r=%d\n",r->num);}//printf("r=%d\n",r->num);r->next = queen;//最 後  一 個 結  點 指 向 頭 結點,形成 循 環 隊列}int solve(int n,int m,node * queen){int i,j;node *s;node *p = queen;//printf("q = %d\n",queen->num);s = p;for(i=1;i<n;i++){//printf("p=%d\n",p->num);for(j=1;j<m;j++){s = p;p=p->next;//s = p;}//printf("*p=%d\n",p->num);s->next = p->next;free(p);p = s->next;}return p->num;}int main(){ int m,n;node * queen; while(scanf("%d%d",&n,&m),n&&m)//scanf("%d%d",&n,&m)&& n||m也對  { //printf("n=%d,m=%d\n",n,m); if(n==1) {printf("1\n");continue; }if(m==1){printf("%d\n",n); continue;}queen = (node *)malloc(sizeof(node)); //第一個結點queen->num = 1;queen->next = NULL; initqueen(n,queen); printf("%d\n",solve(n,m,queen));   } return 0;}

 

 

精簡版:

#include <stdio.h>int main(){  int n, m, i, s=0;  while(scanf("%d%d", &n, &m),n&&m)  {    s=0;    for (i=2; i<=n; i++){    s=(s+m)%i;    }     printf ("%d\n", s+1);  }  return 0; }

 

聯繫我們

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