问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

acm 约瑟夫环问题

发布网友 发布时间:2022-04-27 02:22

我来回答

1个回答

热心网友 时间:2022-06-22 06:21

a(n) = [a(n-1)+m-1]mod(2k-n+1)这个公式给出的a(n),是当次的序号,而不是总序号。用这个公式推导出的被踢掉的人依次是5,4,4,2,2,1。和总序号5,4,6,2,3,1是相符合的。

多减1,是因为,这个人被踢走了后,后面的人会补上来。如果不减这个1,则导致多数1个人。例如,第一次5号被踢掉,然后6号就变成了新5号,总人数从6变成5,此时,如果还向后数5的话,就数到了10,[]mode 5 后得到5,显然不正确。减去1的话,则第2轮数到新4号。

下面的代码,对k从1到100,求满足条件的最小的m。结论是:
k = 1, m = 2
k = 3, m = 5
其他的k,都无满足条件的m。

#include <stdio.h>
// 给定k,m,返回第n轮出局的人的序号
int a( int k, int m, int n )
{
if ( n == 0 )
return 1;
else
{
int pre = a( k, m, n - 1 );
int now = ( pre + m - 1 ) % ( 2 * k - n + 1 );
if ( now == 0 )
now = 2 * k - n + 1;
return now;
}
}
// 给定k,测试m是否合格(是否能保证坏人先出局)
bool is_m_good( int k, int m )
{
for ( int n = 1; n <= k; n++ )
{
int now = a( k, m, n );
if ( now <= k )
return false;
}
return true;
}
// 根据k,计算出最小的合适的m。如果没有合适的m,则返回0
int calc_the_best_m( int k )
{
int m;
for( m = k + 1; m <= 2 * k; m++ )
if ( is_m_good( k, m ) )
break;
if ( m > 2 * k )
m = 0;
return m;
}
void main()
{
// 对k从1到100考察,结论是只有k=1,3的时候,才有合适的m。
for( int k = 1; k <= 100; k++ )
{
int m = calc_the_best_m( k );
if ( m != 0 )
printf( "k=%d, best m=%d\n", k, m );
else
printf( "k=%d, no right m\n", k, m );
}
}
OJ约瑟夫环基础题“选猴王”代码求帮助!!!题目的网址是http://acm.ues...

//现在编译已经没有问题了,逻辑错误还要我帮你改吗?include &lt;stdio.h&gt; include &lt;stdlib.h&gt; typedef struct LNode { int data;struct LNode *next;}Node;Node* newnode(int value){ Node* u = (Node*) malloc(sizeof(Node));if(u != NULL){ u-&gt;data = value;u-&gt;next = NULL;} ...

c++练习题

1.if (a &gt; b &amp;&amp; a &gt; c)max = a;else if (b &gt; a &amp;&amp; b &gt; c)max = b;else max = c;2.while ( cin &gt;&gt; amount){ amt = amount / 10;switch (amt){ case 0: pay = amount * PRICE; cout &lt;&lt; pay &lt;&lt; endl; break;case 1: pay = amount * PRICE * 0.9; cout &lt;&lt; ...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
在哪个银行兑换外币 外币业务哪个银行 上海再现“天价”大白菜,疫情期间哄抬物价会被如何处罚? 买保险的注意事项有什么好处和坏处 有一种成功的捷径,叫”追求极致“ 白茶论到极致以“简”为美,从白茶的形、色、香、味说起 表达深爱到极致的句子 陈霸先大帝《陈霸先大帝》全部章节 疫情期间哄抬物价处罚是什么? 疫情期间,商家哄抬物价该怎么处罚? 踢飞一个人20米,需要多少力? iet,s now go 我听过一首英文歌里面高潮是 on踹斯特 是什么歌? 情态动词后什么时候+be情态动词后能+be再加动词ing吗,这是什么用法,请详解? “忍受”用英语有哪几词? 被动语态中的now 有now的句子用什么时态,请举出例句,如何 kick out of 的用法 now主播不小心 踢 错了人怎么办? now被主播踢出去了怎样恢复? now被踢如何破解 怎样接吻以及接吻的技巧 怎么接吻最热烈?(初吻) 如何接吻(初吻) 初吻怎么吻 自己辞职与公司辞退的区别 自己辞职会出现什么样的问题! 自己辞职,有赔偿吗?单位。 自己辞职??? 关于公司要求自己辞职 Where is he now?这句话是什么意思 求一首英文歌名 一部90年代看过的电视剧,只记得有个男主角叫一枝梅,还有一个书生,最坏的人被踢进油锅死的。 呼伦贝尔的羊肉一年出栏生羊肉是多少? Daniel often plays football. (用now改写) They are watching TV now. (用every day改写 知道规模化养猪场的存栏量和年出栏量,那么年平均存栏量怎么计算 实况十Kaiser是谁 某养猪专业户今年出栏生猪72头比去年出栏生猪头数的两倍多12头这个养猪专业户两年共出栏生猪多少头 建一个年出栏生猪100头的猪厂得多少钱? 年出栏2000头生猪做环评需要啥材料 年出栏10000头肥猪需要养多少头母猪怎么算? 对于年出栏1万头的猪养殖厂,存栏多少只猪合理? 肉羊年出栏300—3000只(专门化育肥场1000只以上)。什么意思 中国野鸡年出栏量是多少 年出栏二千头的生态养猪场需要多少钱投资? 建一个年出栏2000头的肥猪场需要多少成本? 生为一名农村人,一年卖出二三百头猪,这算不算养猪大户? [急]请问猪一年预备出栏数的计算方法 年出栏4000头猪毛利率和净利率是多少 为什么新版QQ显示成为好友的天数最多为854天?
  • 焦点

最新推荐

猜你喜欢

热门推荐