2018-10-10 18:03:03 -04:00
|
|
|
|
---
|
|
|
|
|
id: 5900f37f1000cf542c50fe92
|
2020-12-16 00:37:30 -07:00
|
|
|
|
title: 问题19:计算星期日
|
2018-10-10 18:03:03 -04:00
|
|
|
|
challengeType: 5
|
|
|
|
|
videoUrl: ''
|
2021-01-13 03:31:00 +01:00
|
|
|
|
dashedName: problem-19-counting-sundays
|
2018-10-10 18:03:03 -04:00
|
|
|
|
---
|
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --description--
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
您将获得以下信息,但您可能更愿意为自己做一些研究。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
- 1900年1月1日是星期一。
|
|
|
|
|
- 九月是三十天
|
|
|
|
|
四月,六月和十一月。
|
|
|
|
|
其余的都有三十一个,
|
|
|
|
|
仅拯救二月,
|
|
|
|
|
其中有二十八,风雨无阻。
|
|
|
|
|
在闰年,二十九岁。
|
|
|
|
|
- 闰年发生在任何一年,可被4整除,但除非可被400整除,否则不会在一个世纪上。
|
|
|
|
|
- 在二十世纪的第一个月(1901年1月1日至2000年12月31日),有多少个星期日下降?
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --hints--
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
`countingSundays(1943, 1946)`应该返回6。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
|
|
|
|
```js
|
2020-12-16 00:37:30 -07:00
|
|
|
|
assert.strictEqual(countingSundays(1943, 1946), 6);
|
2018-10-10 18:03:03 -04:00
|
|
|
|
```
|
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
`countingSundays(1995, 2000)`应该返回9。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
```js
|
|
|
|
|
assert.strictEqual(countingSundays(1995, 2000), 10);
|
|
|
|
|
```
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
`countingSundays(1901, 2000)`应该返回171。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
|
|
|
|
```js
|
2020-12-16 00:37:30 -07:00
|
|
|
|
assert.strictEqual(countingSundays(1901, 2000), 171);
|
2018-10-10 18:03:03 -04:00
|
|
|
|
```
|
2020-08-13 17:24:35 +02:00
|
|
|
|
|
2021-01-13 03:31:00 +01:00
|
|
|
|
# --seed--
|
|
|
|
|
|
|
|
|
|
## --seed-contents--
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
function countingSundays(firstYear, lastYear) {
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
countingSundays(1943, 1946);
|
|
|
|
|
```
|
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --solutions--
|
|
|
|
|
|
2021-01-13 03:31:00 +01:00
|
|
|
|
```js
|
|
|
|
|
function countingSundays(firstYear, lastYear) {
|
|
|
|
|
let sundays = 0;
|
|
|
|
|
|
|
|
|
|
for (let year = firstYear; year <= lastYear; year++) {
|
|
|
|
|
for (let month = 0; month <= 11; month++) {
|
|
|
|
|
const thisDate = new Date(year, month, 1);
|
|
|
|
|
if (thisDate.getDay() === 0) {
|
|
|
|
|
sundays++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return sundays;
|
|
|
|
|
}
|
|
|
|
|
```
|