给定数字A找到最小数字B,使得A*B仅包含数字4和0并且零仅应该在最后,即像404这样的数字无效.
例如:
| A | B | A*B |
|---|-----|-----|
| 1 | 4 | 4 |
| 2 | 2 | 4 |
| 3 | 148 | 444 |
| 4 | 1 | 4 |
| 5 | 8 | 40 |
Run Code Online (Sandbox Code Playgroud)
好吧,我以这种方式尝试了这个问题.保持整数队列.最小的数字是4.
Pop the number (i.e. the front element of the queue) and push the numbers that can be derived from this popped number.
That is , when we pop 4, we push (4*10) = 40 …Run Code Online (Sandbox Code Playgroud) 我正在从Abraham Silberschatz和Galvin的书"操作系统概念"一书中研究内存管理单元(MMU)的概念.虽然在第8章之前情况还算不错.但是从第9章开始,事情就开始搞乱了.
我不清楚我的虚拟内存是什么?此外,物理和逻辑地址现在似乎令人困惑?它(虚拟内存)是否存在?根据我现在的理解,我的系统的RAM就是我称之为物理(或主要)内存.我有8GB RAM和64位操作系统.因此,我的RAM可以容纳2 ^ 64-1个地址.这就是我所说的物理地址空间吗?另外,逻辑地址空间究竟是什么?
每个进程都必须在主内存中执行,否则它驻留在硬盘上.给我的代码指令驻留在硬盘上的地址是我称之为逻辑地址的吗?当它被加载到RAM中时,因为位置不是固定的,因此代码可以在任何地方加载,这里分配的地址(RAM)称为物理地址?我认为这种映射称为逻辑 - 物理地址映射.
现在,由于我的代码或进程的大小可能大于可用RAM的大小,因此使用虚拟内存.据我所知,这是一个抽象,给程序员一个视图,他在系统上有无限的可用内存.它基本上是一个硬盘区域,其中一些来自RAM的进程(很少使用)被换出.同时将所需页面放入主存储器中.是这样吗?那么是什么决定了硬盘上这个区域的大小?此外,RAM很便宜,为什么我们需要这样的机制?我们不能增加我们的RAM大小而不是包括交换的开销吗?
我在网上搜索了很多,但没有找到这些术语的确切定义和区别.请帮忙!
谢谢
paging operating-system process virtual-memory memory-address