题目详情
N个人(编号1-N),站成一排,进行报数游戏。报数过程可能进行很多轮,有如下规则:
(1) 如果剩余人数不超过3个人,则游戏结束。
(2) 大家报数,然后留下报奇数的人从第一个人继续游戏,或者留下报偶数的人继续游戏。
重复如此(1)(2)两步骤,到游戏结束。
问:最终剩下的三人组有多少种情况?(注意是三人组,例如如果最后剩下2个或者1个人,不计入结果中)。
输入n, (0<n<=10000000)
输出最终结果。
#include<stdio.h>
int counts;
void f1(int n)
{
if(n<3)
return;
else if(n==3)
{
counts++;;
return;
}
else
{
f1(n/2);
f1((n+1)/2);
}
}
int howmany (int n)
{
counts=0;
f1(n);
return counts;
}
int main()
{
printf("%d",howmany(11));
}