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

    1073 约瑟夫环

    基准时间限制:秒 空间限制:131072 KB 

    N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。

    例如:N = 3K = 22号先出列,然后是1号,最后剩下的是3号。

    Input

    2个数NK,表示N个人,数到K出列。(2 <= N, K <= 10^6)

    Output

    最后剩下的人的编号

    Input示例

    3 2

    Output示例

    3

    import java.util.Scanner;
    public class Main {
        static int fun(int m,int k,int i){
            
            if(i==1)
                return (m+k-1)%m;
            else
                return (fun(m-1,k,i-1)+k)%m;
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner sc=new Scanner(System.in);
            while(sc.hasNext()){
                int m=sc.nextInt();
                int k=sc.nextInt();
                System.out.println(fun(m,k,m)+1);
            }
            sc.close();
    
        }
    
    }

    f(m,k,i)m个人的环,报数为k,第i个人出环的编号,则f(10,3,10)是我们要的结果

    i=1时,  f(m,k,i) = (m+k-1)%m

    i!=1时,  f(m,k,i)= ( f(m-1,k,i-1)+k )%m

    ---------------------------------------------------------------------------------------------------------------------

    解法2

    ----------------------------------------

    package 约瑟夫环的数学优化方法;
    
    import java.util.Scanner;
    /*
     为了讨论方便,先把问题稍微改变一下,并不影响原意:问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。
     */
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int n,m,i,s=0;
            Scanner sc=new Scanner(System.in);
            n=sc.nextInt();
            m=sc.nextInt();
            for(i=2;i<=n;i++){
                s=(s+m)%i;
            }
            System.out.println(s+1);
    
        }
    
    }
  • 相关阅读:
    19 SSM整合,SSM框架快速搭建
    18 MyBatis——多表查询
    17 MyBatis——ResultMap的使用、字段名冲突问题
    97 Eclipse的tomcat修改代码自动重启服务器功能的关闭
    27 Maven报错解决
    16 MyBatis——缓存
    Linux VPS搭建蚂蚁笔记Leanote私有云笔记存储平台
    CentOS7 安装记录
    Linux学习笔记之一
    mr-robot靶机练习
  • 原文地址:https://www.cnblogs.com/watchfree/p/5350741.html
Copyright © 2011-2022 走看看