2018-10-10 18:03:03 -04:00
---
id: 5900f48d1000cf542c50ffa0
2021-02-06 04:42:36 +00:00
title: 'Problem 289: Eulerian Cycles'
2018-10-10 18:03:03 -04:00
challengeType: 5
2021-02-06 04:42:36 +00:00
forumTopicId: 301940
2021-01-13 03:31:00 +01:00
dashedName: problem-289-eulerian-cycles
2018-10-10 18:03:03 -04:00
---
2020-12-16 00:37:30 -07:00
# --description--
2021-02-06 04:42:36 +00:00
Let C(x,y) be a circle passing through the points (x, y), (x, y+1), (x+1, y) and (x+1, y+1).
2020-02-18 01:40:55 +09:00
2021-02-06 04:42:36 +00:00
For positive integers m and n, let E(m,n) be a configuration which consists of the m·n circles: { C(x,y): 0 ≤ x < m, 0 ≤ y < n, x and y are integers }
2020-02-18 01:40:55 +09:00
2021-02-06 04:42:36 +00:00
An Eulerian cycle on E(m,n) is a closed path that passes through each arc exactly once. Many such paths are possible on E(m,n), but we are only interested in those which are not self-crossing: A non-crossing path just touches itself at lattice points, but it never crosses itself.
2020-02-18 01:40:55 +09:00
2021-02-06 04:42:36 +00:00
The image below shows E(3,3) and an example of an Eulerian non-crossing path.
2020-02-18 01:40:55 +09:00
2021-02-06 04:42:36 +00:00
Let L(m,n) be the number of Eulerian non-crossing paths on E(m,n). For example, L(1,2) = 2, L(2,2) = 37 and L(3,3) = 104290.
2020-02-18 01:40:55 +09:00
2021-02-06 04:42:36 +00:00
Find L(6,10) mod 1010.
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
2021-02-06 04:42:36 +00:00
`euler289()` should return 6567944538.
2018-10-10 18:03:03 -04:00
```js
2020-12-16 00:37:30 -07:00
assert.strictEqual(euler289(), 6567944538);
2018-10-10 18:03:03 -04:00
```
2021-01-13 03:31:00 +01:00
# --seed--
## --seed-contents--
```js
function euler289() {
return true;
}
euler289();
```
2020-12-16 00:37:30 -07:00
# --solutions--
2020-08-13 17:24:35 +02:00
2021-01-13 03:31:00 +01:00
```js
// solution required
```