55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | id: 5900f5191000cf542c51002b | ||
|  | title: 'Problem 428: Necklace of Circles' | ||
|  | challengeType: 5 | ||
|  | forumTopicId: 302098 | ||
|  | dashedName: problem-428-necklace-of-circles | ||
|  | --- | ||
|  | 
 | ||
|  | # --description--
 | ||
|  | 
 | ||
|  | Let `a`, `b` and `c` be positive numbers. | ||
|  | 
 | ||
|  | Let W, X, Y, Z be four collinear points where |WX| = `a`, |XY| = `b`, |YZ| = `c` and |WZ| = `a` + `b` + `c`. | ||
|  | 
 | ||
|  | Let C<sub>in</sub> be the circle having the diameter XY. | ||
|  | 
 | ||
|  | Let C<sub>out</sub> be the circle having the diameter WZ. | ||
|  | 
 | ||
|  | The triplet (`a`, `b`, `c`) is called a *necklace triplet* if you can place `k` ≥ 3 distinct circles C<sub>1</sub>, C<sub>2</sub>, ..., C<sub><var>k</var></sub> such that: | ||
|  | 
 | ||
|  | <ul><li>C<sub><var>i</var></sub> has no common interior points with any C<sub><var>j</var></sub> for 1 ≤ <var>i</var>, <var>j</var> ≤ <var>k</var> and <var>i</var> ≠ <var>j</var>,</li><li>C<sub><var>i</var></sub> is tangent to both C<sub>in</sub> and C<sub>out</sub> for 1 ≤ <var>i</var> ≤ <var>k</var>,</li><li>C<sub><var>i</var></sub> is tangent to C<sub><var>i</var>+1</sub> for 1 ≤ <var>i</var> < <var>k</var>, and</li><li>C<sub><var>k</var></sub> is tangent to C<sub>1</sub>.</li></ul> | ||
|  | For example, (5, 5, 5) and (4, 3, 21) are necklace triplets, while it can be shown that (2, 2, 5) is not. | ||
|  | <img src="https://projecteuler.net/project/images/p428_necklace.png" alt="a visual representation of a necklace triplet" /> | ||
|  | 
 | ||
|  | Let T(`n`) be the number of necklace triplets (`a`, `b`, `c`) such that `a`, `b` and `c` are positive integers, and `b` ≤ `n`. For example, T(1) = 9, T(20) = 732 and T(3000) = 438106. | ||
|  | 
 | ||
|  | Find T(1 000 000 000). | ||
|  | 
 | ||
|  | # --hints--
 | ||
|  | 
 | ||
|  | `necklace(1000000000)` should return 747215561862. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.strictEqual(necklace(1000000000), 747215561862); | ||
|  | ``` | ||
|  | 
 | ||
|  | # --seed--
 | ||
|  | 
 | ||
|  | ## --seed-contents--
 | ||
|  | 
 | ||
|  | ```js | ||
|  | function necklace(n) { | ||
|  | 
 | ||
|  |   return true; | ||
|  | } | ||
|  | 
 | ||
|  | necklace(1000000000) | ||
|  | ``` | ||
|  | 
 | ||
|  | # --solutions--
 | ||
|  | 
 | ||
|  | ```js | ||
|  | // solution required | ||
|  | ``` |