第一篇,jos

原创 2017年01月02日 21:31:30

关于jos环,使用递推公式简化问题和代码,关键在于找到正确的递推公式,可使用一个例子来寻找。

(数学能力较差,只好打个表找规律了)

为方便取余运算,将编号1---n的下标表示为0--(n-1)    举例n=11,m=3,即11个人报数,报到3的人出列

下标      0         1        2        3        4        5        6        7         8         9         10

序号      1         2        3        4        5        6        7        8         9        10        11  

一,      4         5        6        7        8        9       10      11        1         2

二,      7         8        9      10       11       1        2        4         5

三,      10      11       1       2         4        5        7        8

四,      2         4        5       7         8       10      11

五,      7         8       10     11        2        4

六,     11        2         4      7         8

七,      7         8        11     2

八,      2         7         8

九,      2         7

十,      7

推到最后可知存活者为7号(红色标记),对应下标(此下标应为最原始所对应的)为6,(实际上无论n,m为何值最后存活的人下标均为0)。

观察红色标记,可发现从第一行开始,每一次7对应的下标都往前推了三位(在自己所在的那一行推);

由此从上至下7对应的下标 6->3->0->6->3->0->3->0->1->1->0;

现在要做的就是从右开始往左边推出最原始的下标,再加一就是存活者序号;

推出过程即将当前坐标向右平移三位,不难发现此时推倒时应对应上一行的人数推倒~-~;

公式:  (当前下标+m)%(当前所在行对应的上一行的人数);

还以11-3为例:  (0+3)%2=1--> (1+3)%3=1-->(1+3)%4=0-->(0+3)%5=3......(省略).....(3+3)%11=6;得出最终下标,加一为序号7;

代码rx:

#include<iostream>
using namespace std;
int jos(int n,int m)
{
int i,k=0;
for (i=2;i<=n;i++)
k=(k+m)%i;
return k+1;
}
int main()
{
int n,m;
while (cin>>n>>m)
cout<<jos(n,m)<<endl;
return 0;
}
当然也可通过设变量为字母找到此规律-.-;

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Jos-lab2(Exercise 4)

Exercise 4.In the file kern/pmap.c,you must implement code for the following functions. 当使用80x86处...

JOS中 "spinlock" 的实现

JOS中  "spinlock" 的实现 In software engineering, a spinlock is a lock which causes a thread tryi...

jos学习中的分段分页机制

关于jos学习中的分段分页机制 一 分段机制  1、什么是分段机制   分段机制就是把虚拟地址空间中的虚拟内存组织成一些长度可变的称为段的内存块单元。  2、什么是段   每个段由三个参数定义:段基...

Jos-lab2 (Exercise 1)

.In the file kern/pmap.c,you must implement code for the following functions (probablyin the order g...

Jos - lab4 (Part A) Round-Robin Scheduling

Exercise 6.Implement round-robin scheduling in sched_yield()as described above. Don't forget to mod...

JOS lab4 Lapic与Intel多核系统

JOS lab4 Lapic与Intel多核系统

Jos - lab4 (Part A) System Calls for Environment Creation

Question 3. In your implementation of env_run() you should havecalled lcr3(). Before and after the...

JOS大内核锁

JOS lab4里面,采用了SMT的操作系统,所以可能存在两个CPU同时进入内核态,虽然CPU之间的内核栈,但是多核同步可能还是会出现问题,所以JOS采用大内核锁来锁住整个内核,使得每次只有一个CPU...

MIT 操作系统实验 MIT JOS lab2

MIT JOS lab1

MIT 6.828 JOS 环境配置

MIT 6.828 JOS Lab1 记录这学期刚好在学操作系统课程,课余时间也比较充足,所以着手开始做鼎鼎大名的MIT 6.828 操作系统课程的Lab。It must be a long jour...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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