【一维数组】排队报数

原问题:【一维数组】排队报数
分类:编程开发 > 最后更新时间:【2016-12-12 18:54:56】
问题补充:

题目描述把N个同学排成一排, 由前向后按1,2,1,2......报数, 报单数的走出队伍, 报双数的向前靠拢重新组成一排, 然后再1,2,1,2......报数, 报单数的走出队伍,问剩下最后一个人时,这个人原来在哪个位置.(N由键盘输入)

输入一行一个正整数,表示有多少个同学输出一行一个整数,表示最后退出的同学原来在哪个位置

样例输入6样例输出4

数据范围限制

最佳答案

这个题目完全可不用数组,分析下,最终的位置m肯定是小于总人数n的2的m次方,所以以下程序应该能得到你想要的

#include <stdio.h>
int main()
{
int n,m=2;
scanf("%d",&n);
while(n>=m)
m*=2;
printf("%d\n",m/2);
return 0;
}

输入

6

输出

4

输入

10

输出

8

输入

100

输出

64


  • 追问:
    对不起。能不能用Pascal做?
    最佳答案由网友  whoami1978  提供
  • 公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
    4

    分享到:

    其他回答

    暂无其它回答!

      推荐