zoukankan      html  css  js  c++  java
  • Poj 3517 And Then There Was One(约瑟夫环变形)

    简单说一下约瑟夫环:约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

    想要求出最后剩下的那个人的在初始的时候的编号的话。

    f[1]=0;

    f[i]=(f[i-1]+m)%i;  (i>1)

    可以推出剩下i个人内叫到m的时候的编号。注意这是逆推。推到最后初始的时候的情况

    #include<stdio.h>
    int main(void)
    {
        int i,n,k,m;
        int fn[10001];
        while(scanf("%d%d%d",&n,&k,&m),n,k,m)
        {
            fn[1]=0;
            for(i=2;i<n;i++)
                fn[i]=(fn[i-1]+k)%i;
            printf("%d
    ",(fn[n-1]+m)%n+1);
        }
        return 0;
    }
  • 相关阅读:
    20200824
    Redis
    vs2012快捷键教程
    OpenCV 2.4+ C++ SVM介绍
    隐马尔科夫模型
    hu矩
    手势跟踪
    混合高斯模型GMM
    排序算法
    聚类——混合高斯模型 Gaussian Mixture Model
  • 原文地址:https://www.cnblogs.com/woshijishu3/p/3866628.html
Copyright © 2011-2022 走看看