--- id: 5900f4eb1000cf542c50fffd challengeType: 5 title: 'Problem 382: Generating polygons' videoUrl: '' localeTitle: 'Problema 382: Gerando polígonos' --- ## Description
Um polígono é uma forma plana que consiste em segmentos de linha reta que são unidos para formar uma cadeia ou circuito fechado. Um polígono consiste em pelo menos três lados e não se auto-intercepta.

Diz-se que um conjunto S de números positivos gera um polígono P se: não há dois lados de P com o mesmo comprimento, o comprimento de todos os lados de P está em S e S não contém outro valor.

Por exemplo: O conjunto {3, 4, 5} gera um polígono com os lados 3, 4 e 5 (um triângulo). O conjunto {6, 9, 11, 24} gera um polígono com os lados 6, 9, 11 e 24 (um quadrilátero). Os conjuntos {1, 2, 3} e {2, 3, 4, 9} não geram nenhum polígono.

Considere a sequência s, definida da seguinte forma: s1 = 1, s2 = 2, s3 = 3 sn = sn-1 + sn-3 para n> 3.

Seja Un o conjunto {s1, s2, ..., sn}. Por exemplo, U10 = {1, 2, 3, 4, 6, 9, 13, 19, 28, 41}. Seja f (n) o número de subconjuntos de Un que geram pelo menos um polígono. Por exemplo, f (5) = 7, f (10) = 501 e f (25) = 18635853.

Encontre os últimos 9 dígitos de f (1018).

## Instructions
## Tests
```yml tests: - text: euler382() deve retornar 697003956. testString: 'assert.strictEqual(euler382(), 697003956, "euler382() should return 697003956.");' ```
## Challenge Seed
```js function euler382() { // Good luck! return true; } euler382(); ```
## Solution
```js // solution required ```