第一篇,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学习中的分段分页机制

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

JOS大内核锁

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

Jos-lab2(Exercise 4)

Exercise 4.In the file kern/pmap.c,you must implement code for the following functions. 当使用80x86处...
  • htjacky
  • htjacky
  • 2014年01月08日 10:54
  • 745

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...
  • htjacky
  • htjacky
  • 2014年02月03日 00:56
  • 903

JOS中 "spinlock" 的实现

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

Jos-lab2 (Exercise 1)

.In the file kern/pmap.c,you must implement code for the following functions (probablyin the order g...
  • htjacky
  • htjacky
  • 2014年01月04日 07:53
  • 584

Jos - lab4 (Part A) Round-Robin Scheduling

Exercise 6.Implement round-robin scheduling in sched_yield()as described above. Don't forget to mod...
  • htjacky
  • htjacky
  • 2014年02月01日 01:13
  • 1124

JOS lab4 Lapic与Intel多核系统

JOS lab4 Lapic与Intel多核系统

JOS 用户态page fault保护处理机制分析

JOS 用户态page fault保护处理机制分析 常常会在用户态触发page fault,如果直接让其因为page fault跌入内核触发panic目测是不是"太残忍了" 你想想,一个刚学会写C...

JOS lab4 用户程序分析

JOS lab4 用户程序分析 faultread.c faultdie.c: 这两个用户程序一起分析 左右两个用户程序,都试图对非法地址写入数据,但是左边的就会导致 page fault ,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第一篇,jos
举报原因:
原因补充:

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