问题描述如下:
代码 :
#include <stdio.h>
#define N 300
int A[N];
int main()
{
int n,m;
int step,pos; //记录第几步,当前位置
int count; //当前果子数目;
int tag; //记录当前吃掉的果子
int lastPos;
bool flag;
while (scanf("%d%d",&n,&m)==2)
{
for (int i=1;i<=n;++i)
{
A[i]=i;
}
step=1; pos=1;
count=n;
tag=0;
lastPos=0;
flag=true;
while (step<=m)
{
pos +=(step*step*step%5+1); //jump
if (pos>count)
{
if (pos==lastPos)
{
//printf("-1\n");
flag=false;
break;
}
lastPos=pos;
pos=1; //回到起点重新跳
continue;
}else
{
tag=A[pos];
//printf("%d\n",tag);
A[pos]=-1;
for (int j=pos+1;j<=count;++j)
{
A[j-1]=A[j]; //果子下落
}
count--;
}
step++;
}
if (flag)
{
printf("%d\n",tag);
}
else
{
printf("-1\n");
}
}
return 0;
}
本文展示了一个使用C语言实现的复杂循环与数组操作的示例,通过不断更新数组元素来模拟果子被吃掉的过程,直至达到指定的步数。代码中详细展示了如何在循环中更新数组元素,并在特定条件下进行数组元素的移动。
47

被折叠的 条评论
为什么被折叠?



