有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
#include <iostream>
using namespace std;
int func(int n)
{
int residue = n;
int num = 0;
int i = 0;
int re_turn;
int *a = new int[n];
for (int i = 0; i < n; i++)
{
a[i] = 1;
}
while (residue != 1)
{
if (a[i] == 1)
{
num++;
}
if (num == 3)
{
a[i] = 0;
num = 0;
residue--;
}
i++;
if (i == n)
{
i = 0;
}
}
for (int i = 0; i < n; i++)
{
cout << a[i] << " ";
if (a[i] == 1)
{
re_turn = i;
}
}
cout << endl;
delete [] a;
return re_turn + 1;
}
int main()
{
int num = 0;
cout << "input how many people ;";
cin >> num;
cout<<"the last is :"<<func(num)<<endl;
system("pause");
return 0;
}