56 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | id: 5900f45b1000cf542c50ff6d | |||
|  | challengeType: 5 | |||
|  | title: 'Problem 238: Infinite string tour' | |||
|  | videoUrl: '' | |||
|  | localeTitle: 'Задача 238: Бесконечная струнная экскурсия' | |||
|  | --- | |||
|  | 
 | |||
|  | ## Description
 | |||
|  | <section id="description"> Создайте последовательность чисел, используя генератор псевдослучайных чисел «Blum Blum Shub»: <p> s0 = 14025256 sn + 1 = sn2 mod 20300713 </p><p> Объедините эти числа s0s1s2 ..., чтобы создать строку w бесконечной длины. Затем w = 14025256741014958470038053646 ... </p><p> Для положительного целого k, если подстрока w не существует с суммой цифр, равной k, p (k) определяется как нуль. Если существует хотя бы одна подстрока w с суммой цифр, равной k, определим p (k) = z, где z - начальная позиция самой ранней такой подстроки. </p><p> Например: </p><p> Подстроки 1, 14, 1402, ... с соответствующими суммами цифр, равными 1, 5, 7, ... начинаются в позиции 1, следовательно, p (1) = p (5) = p (7) = ... = 1. </p><p> Подстроки 4, 402, 4025, ... с соответствующими суммами цифр, равными 4, 6, 11, ... начинаются в позиции 2, следовательно, p (4) = p (6) = p (11) = ... = 2. </p><p> Подстроки 02, 0252, ... с соответствующими суммами цифр, равными 2, 9, ... начинаются в позиции 3, поэтому p (2) = p (9) = ... = 3. </p><p> Обратите внимание, что подстрока 025, начиная с позиции 3, имеет сумму цифр, равную 7, но была ранняя подстрока (начиная с позиции 1) с суммой цифр, равной 7, поэтому p (7) = 1, а не 3. </p><p> Мы можем проверить, что при 0 <k ≤ 103, Σ p (k) = 4742. </p><p> Найти Σ p (k), при 0 <k ≤ 2 · 1015. </p></section> | |||
|  | 
 | |||
|  | ## Instructions
 | |||
|  | <section id="instructions"> | |||
|  | </section> | |||
|  | 
 | |||
|  | ## Tests
 | |||
|  | <section id='tests'> | |||
|  | 
 | |||
|  | ```yml | |||
|  | tests: | |||
|  |   - text: <code>euler238()</code> должен вернуть 9922545104535660. | |||
|  |     testString: 'assert.strictEqual(euler238(), 9922545104535660, "<code>euler238()</code> should return 9922545104535660.");' | |||
|  | 
 | |||
|  | ``` | |||
|  | 
 | |||
|  | </section> | |||
|  | 
 | |||
|  | ## Challenge Seed
 | |||
|  | <section id='challengeSeed'> | |||
|  | 
 | |||
|  | <div id='js-seed'> | |||
|  | 
 | |||
|  | ```js | |||
|  | function euler238() { | |||
|  |   // Good luck! | |||
|  |   return true; | |||
|  | } | |||
|  | 
 | |||
|  | euler238(); | |||
|  | 
 | |||
|  | ``` | |||
|  | 
 | |||
|  | </div> | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | </section> | |||
|  | 
 | |||
|  | ## Solution
 | |||
|  | <section id='solution'> | |||
|  | 
 | |||
|  | ```js | |||
|  | // solution required | |||
|  | ``` | |||
|  | </section> |