信息学奥赛C++语言:约瑟夫问题
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛C++语言:约瑟夫问题
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【題目描述】
有 m 個(gè)人,其編號(hào)分別為 1~m。按順序圍成一個(gè)圈,現(xiàn)在給定一個(gè)數(shù) n,從第一個(gè)人開(kāi)始依次報(bào)數(shù),報(bào)到 n 的人出圈,然后再?gòu)南乱粋€(gè)人開(kāi)始,繼續(xù)從 1 開(kāi)始依次報(bào)數(shù),報(bào)到 n 的人再出圈,……如此循環(huán),直到最后一個(gè)人出圈為止。編程輸出所有人出圈的順序。
【輸入】
一行兩個(gè)正整數(shù) m 和 n,之間用一個(gè)空格隔開(kāi),1≤m<100,1≤n≤32767。
【輸出】
輸出 m 行,每行一個(gè)正整數(shù),表示依次出圈的人的編號(hào)。
【輸入樣例】
8 5
【輸出樣例】
5
2
8
7
1
4
6
3
代碼
#include<bits/stdc++.h> using namespace std; int n,m,t,l,a[105]; int main() {scanf("%d %d",&n,&m);int t=n,l=1;while(t){int s=0;for(int i=l;s!=m;i++){if(i>n) i%=n;if(a[i]==-1)continue;s++;if(s==m){a[i]=-1;t--;l=i+1;printf("%d\n",i);break;}}}return 0; } 新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的信息学奥赛C++语言:约瑟夫问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 验证子串(信息学奥赛一本通-T1140)
- 下一篇: 字符串的展开(洛谷-P1098)