2018-10-10 22:03:03 +00:00
|
|
|
|
---
|
|
|
|
|
id: 5900f4a71000cf542c50ffba
|
|
|
|
|
challengeType: 5
|
|
|
|
|
videoUrl: ''
|
2020-10-01 15:54:21 +00:00
|
|
|
|
title: 问题315:数字根时钟
|
2018-10-10 22:03:03 +00:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Description
|
2020-02-17 16:40:55 +00:00
|
|
|
|
<section id="description">
|
|
|
|
|
请Sam和Max将两个数字时钟转换为两个“数字根”时钟。
|
|
|
|
|
数字根时钟是一种逐步计算数字根的数字时钟。
|
|
|
|
|
|
|
|
|
|
当时钟输入一个数字时,它将显示它,然后它将开始计算,显示所有中间值,直到得到结果为止。
|
|
|
|
|
例如,如果时钟被输入数字137,它将显示:“ 137”→“ 11”→“ 2”,然后它将变黑,等待下一个数字。
|
|
|
|
|
|
|
|
|
|
每个数字均由一些亮段组成:三个水平段(顶部,中间,底部)和四个垂直段(左上,右上,左下,右下)。
|
|
|
|
|
数字“ 1”由垂直的右上角和右下角构成,数字“ 4”由中间的水平和垂直左上角,右上角和右下角组成。数字“ 8”将它们全部点亮。
|
|
|
|
|
|
|
|
|
|
仅当打开/关闭分段时,时钟才消耗能量。
|
|
|
|
|
打开“ 2”将花费5个转换,而“ 7”将仅花费4个转换。
|
|
|
|
|
|
|
|
|
|
山姆和麦克斯建造了两个不同的时钟。
|
|
|
|
|
|
|
|
|
|
山姆的时钟喂食例如数字137:时钟显示“ 137”,然后关闭面板,然后打开下一个数字(“ 11”),然后再次关闭面板,最后打开最后一个数字(“ 2”)并在一段时间后关闭。
|
|
|
|
|
例如,对于数字137,Sam的时钟要求:“ 137”
|
|
|
|
|
:
|
|
|
|
|
(2 + 5 + 4)×2 = 22个转换(“ 137”打开/关闭)。
|
|
|
|
|
“ 11”
|
|
|
|
|
:
|
|
|
|
|
(2 + 2)×2 = 8个转换(“ 11”开/关)。
|
|
|
|
|
“ 2”
|
|
|
|
|
:
|
|
|
|
|
(5)×2 = 10个转换(“ 2”打开/关闭)。
|
|
|
|
|
|
|
|
|
|
总共进行了40次转换。
|
|
|
|
|
|
|
|
|
|
马克斯的时钟工作方式不同。除了关闭整个面板,它还足够聪明,可以仅关闭下一个数字不需要的那些段。
|
|
|
|
|
对于数字137,麦克斯的时钟要求:“ 137”
|
|
|
|
|
:
|
|
|
|
|
2 + 5 + 4 = 11个转换(“ 137”亮)
|
|
|
|
|
7个转换(关闭数字“ 11”不需要的段)。
|
|
|
|
|
“ 11”
|
|
|
|
|
:
|
|
|
|
|
0个转换(数字“ 11”已正确打开)
|
|
|
|
|
3个转换(关闭第一个“ 1”和第二个“ 1”的底部;
|
|
|
|
|
顶部与数字“ 2”相同)。
|
|
|
|
|
“ 2”
|
|
|
|
|
:
|
|
|
|
|
4个转换(打开其余段以获取“ 2”)
|
|
|
|
|
5个转换(关闭数字“ 2”)。
|
|
|
|
|
|
|
|
|
|
总共进行了30次转换。
|
|
|
|
|
|
|
|
|
|
当然,Max的时钟比Sam的时钟消耗更少的功率。
|
|
|
|
|
两个时钟都馈入A = 107和B = 2×107之间的所有素数。
|
|
|
|
|
求出Sam的时钟所需的跃迁总数与Max的时钟所需的跃迁总数之间的差。
|
|
|
|
|
</section>
|
2018-10-10 22:03:03 +00:00
|
|
|
|
|
|
|
|
|
## Instructions
|
2020-02-17 16:40:55 +00:00
|
|
|
|
<section id="instructions">
|
|
|
|
|
</section>
|
2018-10-10 22:03:03 +00:00
|
|
|
|
|
|
|
|
|
## Tests
|
|
|
|
|
<section id='tests'>
|
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
tests:
|
2020-02-17 16:40:55 +00:00
|
|
|
|
- text: <code>euler315()</code>应该返回13625242。
|
|
|
|
|
testString: assert.strictEqual(euler315(), 13625242);
|
2018-10-10 22:03:03 +00:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
## Challenge Seed
|
|
|
|
|
<section id='challengeSeed'>
|
|
|
|
|
|
|
|
|
|
<div id='js-seed'>
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
function euler315() {
|
|
|
|
|
// Good luck!
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
euler315();
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
## Solution
|
|
|
|
|
<section id='solution'>
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
// solution required
|
|
|
|
|
```
|
2020-08-13 15:24:35 +00:00
|
|
|
|
|
|
|
|
|
/section>
|