基本上纯Joseph核心问题,只是第一步多一件。m。

然后你就可以用获得的递推公式:

Win(n) 代表n当个人的中奖号码,

然后,Win(n)必须相等Win(n-1)。当一个人将在下一次删除队列。

下一个出队列的人是谁呢? 假设模是mod的话,那么下一个出队号码计算为:

Lose(n) = mod % n;

if (Lose(n) == 0) Lose(n) = n;

这样得到公式:

Win(n) - Lose(n)  = Win(n-1);

Win(n) = Win(n-1) + Lose(n);

可是注意人数仅仅有n个了,所以要取模:

Win(n) = (Win(n-1) + Lose(n)) % n;

if (Win(n) == 0) Win(n) = n;

然后由于最后要剩下一个人。那么最后一个人为Win(1) = 1;

可是假设写一般的递归公式。那么就会导致栈溢出的,所以要逆过来,从仅仅有1个人的时候推起,推到第n

这样够清晰了吧,这你都不明确我就没办法了。

作者:靖心 http://blog.csdn.net/kenden23/article/details/30050425

最后得到AC代码:

#include <cstdio>
int main()
{
int n, k, m;
while (scanf("%d %d %d", &n, &k, &m) && m)
{
int winN_1 = 1, winN = 0;
for (int i = 2; i < n; i++)
{
int t = k % i;
if (t == 0) t = k; winN = (winN_1 + t) % i;
if (winN == 0) winN = i; winN_1 = winN;
}
int t = m % n;
if (t == 0) t = m; winN = (winN_1 + t) % n;
if (winN == 0) winN = n; printf("%d\n", winN);
}
return 0;
}

当然我们能够简化上面程序。思路是一样的,只是依据模的特性简化一下罢了:

网上通常是以下这种程序,只是他们的推导。我个人认为较难懂,所以有上面我自己的推导和程序。

我的推导是把这种模简化隔离出来,我个人认为会清晰非常多。

所以假设你看了网上类似的以下程序,认为糊里糊涂的话。建议能够參考我上面的程序。

#include <cstdio>
int main()
{
int n,k,m;
while(scanf("%d%d%d",&n,&k,&m) && n)
{
int winN = 0, winN_1 = 0;
for(int i = 2; i < n; i++)
{
winN = (winN_1 + k) % i;
winN_1 = winN;
}
winN = (winN_1 + m)%n;
printf("%d\n", winN+1);
}
return 0;
}

版权声明:笔者靖心脏。景空间地址:http://blog.csdn.net/kenden23/,只有经过作者同意转载。

Poj 3517 And Then There Was One Joseph核心问题的更多相关文章

  1. UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)

    UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There W ...

  2. poj 3517

    题目链接  http://poj.org/problem?id=3517 题意        约瑟夫环  要求最后删掉的那个人是谁: 方法        理解递推公式就行了  考虑这样一组数据  k ...

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

    链接:传送门 题意:典型约瑟夫环问题 约瑟夫环模板题:n个人( 编号 1-n )在一个圆上,先去掉第m个人,然后从m+1开始报1,报到k的人退出,剩下的人继续从1开始报数,求最后剩的人编号 /**** ...

  4. poj 3517 约瑟夫环

    最简单的约瑟夫环,虽然感觉永远不会考约瑟夫环,但数学正好刷到这部分,跳过去的话很难过 直接粘别人分析了 约瑟夫问题: 用数学方法解的时候需要注意应当从0开始编号,因为取余会等到0解. 实质是一个递推, ...

  5. Poj 3517 And Then There Was One(约瑟夫环变形)

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

  6. poj 3517(约瑟夫环问题)

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

  7. poj 1012 &amp; hdu 1443 Joseph(约瑟夫环变形)

    题目链接: POJ  1012: id=1012">http://poj.org/problem?id=1012 HDU 1443: pid=1443">http:// ...

  8. POJ 1012 Joseph 约瑟夫问题

    http://poj.org/problem?id=1012 早上去图书馆复习苦逼的复习....万恶的数逻.T T我还要自我安慰的说复习完了奖励回来刷水题~ 10点多的时候外面校运会大吼撑杆跳的那个. ...

  9. POJ 1012 Joseph

    Joseph Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44650   Accepted: 16837 Descript ...

随机推荐

  1. Redis整合Spring结合使用缓存实例(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文介绍了如何在Spring中配置redis,并通过Spring中AOP的思想,将缓存的 ...

  2. 微渠道发展 BAE交通运输平台和java呼声,微信mysql数据库开发实例 --图文开发教程

    持续更新 BAE java开展mysql数据库 图文教程 BAE java语言发展mysql源码下载: 目前微信的发展.BAE开展.java开展.mysql教程开发非常,的介绍基于BAE平台.java ...

  3. 乐在其中设计模式(C#) - 享元模式(Flyweight Pattern)

    原文:乐在其中设计模式(C#) - 享元模式(Flyweight Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 享元模式(Flyweight Pattern) 作者:weba ...

  4. RSA算法加密解密

    该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1. jar 注意:RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块 ...

  5. 怎样设制 select 不可编辑 仅仅读

    1. <select style="width:195px" name="role"  id="role" onfocus=" ...

  6. sql pivot、unpivot和partition by用法

    原文:sql pivot.unpivot和partition by用法 演示脚本 from sys.sysobjects where name = 'Student' AND type = 'U') ...

  7. 【iOS发展-61】更换plist经过资源,执行iOS一旦数据仍显示在模拟器的外观,如何解决?

    (1)案例介绍 --我们首先导入plist文件做项目,模拟的观看效果. --删除plist,更换一个新的plist,CMD+R模拟执行,或者找到该程序界面上显示最后一个数据. (2)原因 是由于第一次 ...

  8. UVa10000_Longest Paths(最短路SPFA)

    解题报告 求最长路. 用SPFA求最长路,初始化图为零,dis数组也为零 #include <iostream> #include <cstdio> #include < ...

  9. 如何使用autolayout的UIView加入动画

    hi,all: 在经过了一番犹豫之后,我决定将我自己做的这个小APP的源代码发布给大家: 其出发点是和大家一起学习iOS开发,仅供学习參考之用. 之前代码是托管与gitlab 上的.今天我将其pull ...

  10. GCD下载图片

    cell.myimage.layer.masksToBounds=YES;     cell.myimage.layer.cornerRadius=cell.myimage.frame.size.wi ...