zoukankan      html  css  js  c++  java
  • 约瑟夫环

    Description

    题目:n个数字(1,2,3…,n)形成一个圆圈,从数字1开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。
    当一个数字删除后,从被删除数字的下一个继续删除第m个数字。
    求出在这个圆圈中剩下的最后一个数字。

    Input

    输入:

    n=9

    m=5

    Output

    The last one is 8

    Sample Input

    9 5

    Sample Output

    8

    数学方法:
    #include <stdio.h>
    int main()
    {
        int i,n,m,l;
        scanf("%d %d",&n,&m);
        for(i=2,l=0;i<=n;i++)
           l=(l+m)%i;
          printf("%d
    ",l+1);
        return 0;
    }


    数组模拟:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int  m,n,t[1000]={0};
        int i,j,sum=0;
        scanf("%d%d",&m,&n);
        for(i=1,j=0;;i++)
        {
            if(!t[i])
            {
                j++;
                if(j==n)
                {
                    t[i]=1;
                    j=0;
                    sum++;
                }
                if(sum==m)
                {
                    printf("%d",i);
                    break;
                }
    
            }
            if(i==m)
                i=0;
        }
        return 0;
    }


  • 相关阅读:
    [Postman]历史(8)
    [Postman]响应(7)
    [Postman]请求(6)
    [Postman]查找替换(5)
    ORA-02050故障诊断一例
    转 js实践篇:例外处理Try{}catch(e){}
    转 PHP
    HTML DOM getElementById() 方法
    地点选择
    9i 和 11 g 区别
  • 原文地址:https://www.cnblogs.com/ljhacm/p/6722463.html
Copyright © 2011-2022 走看看