pku3517约瑟夫环问题

原创 2011年01月20日 09:16:00

【题意】

典型约瑟夫环问题的变种,由杀人变成取石子,石子从1到n编号,先把m取掉(1<=m<=n),然后从m+1开始每k个石子取一个,问最后一个“胜利”的石子;

 

【分析】

这里m号石子先取掉,那么之后的循环不会再有m介入,所以我们只需要计算出剩下n-1个石子的最后胜者就可以。我们从m+1开始编号0,m+2编号1,。。。m-1编号n-2,用下面的Joseph()函数就可以计算出它们的最后胜者,返回结果要加1,因为编号从0开始,而我们题目数据计数从1开始,这样返回的结果是res, (res+m)%n就是答案了,开始wa了,因为如果res+m==n的话,应该输出n而不是0,改后AC,以后记住这个教训;

 

【代码】

 

/*3517 Accepted 356K 16MS G++ 468B 2011-01-20 09:07:53 */
#include<stdio.h>
int Joseph(int n,int m){//n个人,报数m;
    int i=2,a=0,b;
    if(n==1) return 1;
    while(i<=n){
        b= (a+m)%i; //i表示当前人数;
        a=b;
        i++;
    }
    return b+1;
}
int main()
{
    int n,m,k,res,i;
    while(scanf("%d%d%d",&n,&k,&m),(n+k+m)) 
    {
        res=Joseph(n-1,k);
        res= (m+res)%n;
        if(res==0) res=n;
        printf("%d/n",res);
    }
}           

相关文章推荐

pku3517(约瑟夫环)

And Then There Was One Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: ...

POJ 3517 And Then There Was One (约瑟夫环问题)

经典的约瑟夫环问题嘛。有点小小的变形而已。给你N个人围成一个环(编号1~N),从第M个人开始,每隔K个人报一次数,报数的人离开该环。 求最后剩下的人的编号。 约瑟夫问题的数学递推解法: (1)第一...

pku1012==hdu1443约瑟夫环问题

pku1012我写了个链表的暴力来直接打表发现只能打到k=9,到10就运行不了了;代码在下面,而网上这一篇http://blog.csdn.net/rongyongfeikai2/archive/20...

poj 3517 And Then There Was One(约瑟夫问题)【模板】

Let’s play a stone removing game. Initially, n stones are arranged on a circle and numbered 1, …, n...

POJ-3517 And Then There Was One (约瑟夫环模板)

And Then There Was One   POJ - 3517 Let’s play a stone removing game. Initially, n stones are ar...

hdu2925 Musical Chairs && poj3517 And Then There Was One(约瑟夫环)

http://acm.hdu.edu.cn/showproblem.php?pid=2925 我嘞个深深地去啊,上次做线段树一直理解不了约瑟夫环,做了一道还是感觉没吃透,这次终于搞定了。。 参考博客...

poj 3517(约瑟夫环。。。。。)

无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的。我们...

POJ题目3517 And Then There Was One(约瑟夫,公式)

And Then There Was One Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: ...

C语言实现的约瑟夫环问题

  • 2015年12月03日 16:58
  • 2.68MB
  • 下载

约瑟夫环问题

  • 2015年06月30日 11:53
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pku3517约瑟夫环问题
举报原因:
原因补充:

(最多只允许输入30个字)