情報オルセー課課通(C++)p 162例4ジョセフ問題

713 ワード

ヨセフ問題:m個の騎士番号1,2,...,m、円卓のそばに囲まれて座っている.1番の騎士は1から数え、nの騎士が列を出し、次の位置から1から数え、最後の一人が列を出るまで循環する.プログラミングはすべての出列の騎士の順序を求める.入力フォーマット:正の整数mとnの行を1つのスペースで区切り、1<=m<100、1<=n=32767にします.出力フォーマット:m行を出力し、各行に正の整数を1つずつ出力し、順次列を出す人の番号を表す.入力サンプル:8 5出力サンプル:5 2 8 7 1 4 3
#include
using namespace std;
int main()
{
int m,n,i,k=0,last;
bool p[101]; 
//p[i]          ,true      ,false       
//last            
cin>>m>>n;
for(i=1;i<=m;i++)
    p[i]=true;
last=m;
i=1;
while(i<=m)
{
    if(p[i]) 
    {
        k++; 
        k%=5;
        //5       1 
		if(k%n==0)    
        {
            p[i]=false;
            cout<