1339 - C语言程序设计教程(第三版)课后习题10.5
时间限制 : 1 秒
内存限制 : 128 MB
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。使用指针
题目输入
初始人数n
题目输出
最后一人的初始编号
输入/输出样例
输入格式
3
输出格式
2
C++解答
#include<iostream> #include<cstring> using namespace std; bool a[1000]; int main() { memset(a,0,sizeof(a)); int n; cin>>n; bool *p=a; for (int i=0; i<n; i++) *(p+i)=true; int i=0; //i为每次循环时计数变量 int k=0; //k为按1,2,3报数时的计数变量 int m=0; //m为退出人数 while (m<n-1) { if (i==n) i=0; if (*(p+i)) k++; if (k==3) { *(p+i)=false; k=0; m++; } i++; } for (int i=0; i<n; i++) if (*(p+i)) { cout<<i+1<<endl; break; } return 0; }