| 
									
										
										
										
											2021-06-15 00:49:18 -07:00
										 |  |  | --- | 
					
						
							|  |  |  | id: 5900f3a01000cf542c50feb3 | 
					
						
							| 
									
										
										
										
											2021-08-25 09:12:11 -07:00
										 |  |  | title: 'Problema 52: Múltiplos permutados' | 
					
						
							| 
									
										
										
										
											2021-06-15 00:49:18 -07:00
										 |  |  | challengeType: 5 | 
					
						
							|  |  |  | forumTopicId: 302163 | 
					
						
							|  |  |  | dashedName: problem-52-permuted-multiples | 
					
						
							|  |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # --description--
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-25 09:12:11 -07:00
										 |  |  | Podemos notar que o número, 125874, e o seu dobro, 251748, contêm exatamente os mesmos dígitos, mas em uma ordem diferente. | 
					
						
							| 
									
										
										
										
											2021-06-15 00:49:18 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-25 09:12:11 -07:00
										 |  |  | Encontre o menor número inteiro positivo, tal que, multiplicado por números inteiros $\\{2, 3, \ldots, n\\}$, contém os mesmos algarismos. | 
					
						
							| 
									
										
										
										
											2021-06-15 00:49:18 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | # --hints--
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-25 09:12:11 -07:00
										 |  |  | `permutedMultiples(2)` deve retornar um número. | 
					
						
							| 
									
										
										
										
											2021-06-15 00:49:18 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | assert(typeof permutedMultiples(2) === 'number'); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-25 09:12:11 -07:00
										 |  |  | `permutedMultiples(2)` deve retornar `125874`. | 
					
						
							| 
									
										
										
										
											2021-06-15 00:49:18 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | assert.strictEqual(permutedMultiples(2), 125874); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-25 09:12:11 -07:00
										 |  |  | `permutedMultiples(6)` deve retornar `142857`. | 
					
						
							| 
									
										
										
										
											2021-06-15 00:49:18 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | assert.strictEqual(permutedMultiples(6), 142857); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # --seed--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## --seed-contents--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | function permutedMultiples(n) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | permutedMultiples(2); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # --solutions--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | function permutedMultiples(n) { | 
					
						
							|  |  |  |     const isPermutation = (a, b) => | 
					
						
							|  |  |  |         a.length !== b.length | 
					
						
							|  |  |  |             ? false | 
					
						
							|  |  |  |             : a.split('').sort().join() === b.split('').sort().join(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     let start = 1; | 
					
						
							|  |  |  |     let found = false; | 
					
						
							|  |  |  |     let result = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     while (!found) { | 
					
						
							|  |  |  |         start *= 10; | 
					
						
							|  |  |  |         for (let i = start; i < start * 10 / n; i++) { | 
					
						
							|  |  |  |             found = true; | 
					
						
							|  |  |  |             for (let j = 2; j <= n; j++) { | 
					
						
							|  |  |  |                 if (!isPermutation(i + '', j * i + '')) { | 
					
						
							|  |  |  |                     found = false; | 
					
						
							|  |  |  |                     break; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             if (found) { | 
					
						
							|  |  |  |                 result = i; | 
					
						
							|  |  |  |                 break; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return result; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ``` |