#include <iostream>
//10774 - Repeated Josephus
using namespace std;
int Josephus(int n,int k)
{
if(n==1)
return 1;
else return (Josephus(n - 1, k) + k-1) % n + 1;
}
void RepeatedJosephus(int caseNo,int n)
{
int counter=0;
do
{
int result=Josephus(n,2);
//cout<<result<<endl;
if(result==n)
{
break;
}
else
{
counter++;
n=result;
}
}while(1);
cout<<"Case "<<caseNo<<": "<<counter<<" "<<n<<endl;
}
int main()
{
int caseN;
cin>>caseN;
for(int i=0;i<caseN;i++)
{
int n;
cin>>n;
RepeatedJosephus(i+1,n);
}
return 0;
}
//10774 - Repeated Josephus
using namespace std;
int Josephus(int n,int k)
{
if(n==1)
return 1;
else return (Josephus(n - 1, k) + k-1) % n + 1;
}
void RepeatedJosephus(int caseNo,int n)
{
int counter=0;
do
{
int result=Josephus(n,2);
//cout<<result<<endl;
if(result==n)
{
break;
}
else
{
counter++;
n=result;
}
}while(1);
cout<<"Case "<<caseNo<<": "<<counter<<" "<<n<<endl;
}
int main()
{
int caseN;
cin>>caseN;
for(int i=0;i<caseN;i++)
{
int n;
cin>>n;
RepeatedJosephus(i+1,n);
}
return 0;
}
No comments:
Post a Comment