//1088約瑟夫問題
// 這裡我用了簡化算法,參考以下的說明,隻是有點不同先把第一個删掉,從第二個開始數,
// 循環n-1遍(因為已去掉首個),最終剩下目前的第一個結束。
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n && n!=0)
{
int i;
int ans;
for(i=2;i<=32767;i++)
{
ans=0;
int j;
for(j=2;j<n;j++) // 與這個for (i=2; i<=n; i++) s=(s+m)%i;差別
ans=(ans+i)%j;
if(ans==0) //相當于ans+1==1時結束
{
cout<<i<<endl;
break;
}
}
}
return 0;
}
轉載于:https://www.cnblogs.com/VRS_technology/archive/2010/05/11/1732300.html