有m个人围成一圈,开始报数,报道n,退出,问最后剩下的是几号。(从1号开始) 比如: 输入:5 3 输出:4
答案:3 悬赏:0
解决时间 2021-01-24 01:46
- 提问者网友:伴风望海
- 2021-01-23 21:35
有m个人围成一圈,开始报数,报道n,退出,问最后剩下的是几号。(从1号开始) 比如: 输入:5 3 输出:4
最佳答案
- 二级知识专家网友:雾月
- 2021-01-23 23:10
#include
int main(void)
{
int m,n;
scanf("%d%d",&m,&n);
int a[m];
int i;
for(i=0; i {
a[i]=1;
}
int count=1;//报数
int max=m;//减少的最大人数,留下来一个人
int j=0;//数组下标
while(max!=1) //当没有减少足够的人数时
{
if(count==n)
{
printf("减去一个人! %d\n",j+1);
a[j]=0;//把a[j]的值变成
count=1;//重新计数
max--;
continue;
}
if(j>=m)
{
j=0;
continue;
}
j++;
if(a[j]==1)
count++;
}
for(i=0; i {
if(a[i]==1)
printf("%d\n",i+1);
}
return 0;
}
楼主试试这个
追问:我知道其他的方法,你这样 也行,只是不知道我那样的话 怎么有的数字会出错。谢谢你
int main(void)
{
int m,n;
scanf("%d%d",&m,&n);
int a[m];
int i;
for(i=0; i
a[i]=1;
}
int count=1;//报数
int max=m;//减少的最大人数,留下来一个人
int j=0;//数组下标
while(max!=1) //当没有减少足够的人数时
{
if(count==n)
{
printf("减去一个人! %d\n",j+1);
a[j]=0;//把a[j]的值变成
count=1;//重新计数
max--;
continue;
}
if(j>=m)
{
j=0;
continue;
}
j++;
if(a[j]==1)
count++;
}
for(i=0; i
if(a[i]==1)
printf("%d\n",i+1);
}
return 0;
}
楼主试试这个
追问:我知道其他的方法,你这样 也行,只是不知道我那样的话 怎么有的数字会出错。谢谢你
全部回答
- 1楼网友:鱼忧
- 2021-01-24 01:49
请问你的代码呢追答
追问:我问题补充了。您看看,
追答:运行结果对的啊,输入50,就是序号为11啊,请具体说明
追问:输入两个数, 当输入。5,3时我这边显示输出了2,4应该只输出4才对输入两个数, 当输入。5,3时我这边显示输出了2,4应该只输出4才对
追问:我问题补充了。您看看,
追答:运行结果对的啊,输入50,就是序号为11啊,请具体说明
追问:输入两个数, 当输入。5,3时我这边显示输出了2,4应该只输出4才对输入两个数, 当输入。5,3时我这边显示输出了2,4应该只输出4才对
- 2楼网友:山有枢
- 2021-01-24 00:11
我暂时保留我的看法!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯