“3”是聚会时大家非常喜欢玩的一款游戏。现在定义游戏规则如下:
n个人围成一圈,序号分别为1-n,从1号玩家从1开始报数。
如果有玩家报的数是3的倍数或者个位数字为3的玩家退出游戏,下一位玩家继续之前的玩家报数,直到场上只剩下1名玩家,这名玩家就是游戏的胜利者。
比如有10个玩家时,对应的游戏过程如下:
所以最后是5号玩家胜利。
现在给出玩家个数n,请输出最终胜利的玩家序号。
输入格式
仅1行,表示参与游戏的玩家个数。
测试用例中,n小于等于65535大于等于1。
输出格式
输出胜利的玩家序号。
#include
int fac3(int n)
{
int a[65535][65535]={0},i,k;
static int l=0;
k=0;
for(i=0;i<n;i++)
{a[l][i]=l*n+i+1;}
for(i=0;i<n;i++)
{
if(a[l][i]!=0||a[l][i]-10*i!=3)
{
a[l+1][k]=a[l][i];
k++;
}
}
l++;
fac3(k);
if(k==1)
{
for(i=0;i<n;i++)
if(a[l-1][0]==a[0][i])
return i;
}
}
int main()
{
int n,m;
scanf("%d",&n);
m=fac3(n);
printf("%d",m);
}
为什么一运行就崩溃啊?希望有好心人帮改一下,谢谢。。。(预处理指令粘贴不上麻烦加一下)