Spperman


私信TA

用户名:fan

访问量:63039

签 名:

优秀的程序员是没有女朋友的...

等  级
排  名 64
经  验 10125
参赛次数 0
文章发表 66
年  龄 19
在职情况 学生
学  校 河南师范大学
专  业 物联网

  自我简介:

单身是因为——太优秀了...

TA的其他文章

解题思路:

ACM刚起步挫折不断啊

看的Wu的题解 豁然开朗


参考                问题 1047: C语言程序设计教程(第三版)课后习题10.5

注意事项:

Again





参考代码:

#include<iostream>
using namespace std;
void line(int n,int m)

{

    int a[1000],i,num=0,s;                   //提供足够大的循环条件

    for(i=0;i<1000;i++)

    {

        a[i]=1;                                     //这里存储都为1,其实最后用下标 i 来获取每个人的数字

    }

    s=n;                                           //记录总人数

    i=0;

    while(n>1)

    {

        if(a[i]==1)

        {

            num++;                              //num来记录是否为第m个

        }

        if(num==m)                              //num==m时 a[i]=0,表示删除该位置,但是循环时i   仍计算该位置

        {

           a[i]=0;

            num=0;

            n=n-1;                    //控制循环条件n>1

        }

        i++;                              

        if(i==s)                           //循环到头,重头再次循环

        {

            i=0;

        }

    }

    for(i=0;i<s;i++)

    {

        if(a[i]==1)

        cout<<i+1<<endl;                 //i下标为0,所以+1

    }

}

int main()

{

    int m,n;

    while(cin>>n>>m)     //循环输出多组

    {

        line(n,m);

    }

    return 0;

}

 

 

0.0分

4 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区