测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A41097. 报数问题

填空题 较易

题目描述

报数问题

题目描述

有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

输入格式

初始人数n

输出格式

最后一人的初始编号

样例输入

3

样例输出

2

参考答案

#include <stdio.h> int main() { int n,j,i,current = -1; scanf("%d",&n); int a[n]; for(i=1;i<=n;i++) //将初始的数按1,2,3放入数组中 a[i-1] = i; while(n!=1) //当总数为1时说明数组中只剩下一人 { for(j=1;j<=3;j++) current = (current+1)%n; //current作为报数的下标 //printf("\n要删除的数为%d\n",a[current]); for(j=current+1;j<n;j++) //将下标后面的值依次往前移 a[j-1] = a[j]; current--; //去掉一个数后报数下标也要往前移一次 n--; //总人数减去1 } printf("%d",a[0]); //打印最后留在a[0]或者a[current+1]中的数即为最后一人 }
上一题 下一题