Тільки з інтересу я спробував вирішити проблему з категорії «Останні» проекту Euler ( послідовність цифр суми ). Але я не в змозі придумати спосіб ефективного вирішення проблеми. Проблема полягає в наступному (у початковій послідовності питань на початку є два, але послідовність не змінюється):
Послідовність суми цифр дорівнює 1,2,4,8,16,23,28,38,49 .... де додаток послідовності є сумою цифр, що передують їй у послідовності. Знайдіть член послідовності.
Наївне рішення неможливо реалізувати, оскільки це займає багато часу. Я намагався звести цю проблему до випадку експозиції матриці (це зайняло б кількість часу ), але не міг придумати такого рецидиву, що відповідає лінійним критеріям, як повторення для цієї послідовності досить своєрідний. Видно, що послідовність регулюється рецидивом:
де - n ^ {th} додаток послідовності, а d - функція, яка при введенні натурального числа як введення повертає суму цифр числа (наприклад, \; d (786) = 21 ). Мій другий підхід полягав у тому, щоб спробувати знайти деякий зразок у послідовності. Видно, що перші кілька членів послідовності можна записати якn t h d
a_1 = 1
a_2 = 1 + d( 1 )
a_3 = 1 + d( 1 ) + d( 1 + d( 1 ) )
a_4 = 1 + d( 1 ) + d( 1 + d( 1 ) ) + d( 1 + d( 1 ) + d( 1 + d( 1 ) ) )
a_5 = 1 + d( 1 ) + d( 1 + d( 1 ) ) + d( 1 + d( 1 ) + d( 1 + d( 1 ) ) ) + d( 1 + d(
1 ) + d( 1 + d( 1 ) ) + d( 1 + d( 1 ) + d( 1 + d( 1 ) ) ) )
З наведеної вище схеми стає зрозуміло, що член послідовності може бути сформований наступним методом:
- Запишіть 1 'з символом додавання між ними.
- Залишивши перший , потім застосуйте функцію на наступних умовах, потім на наступних умовах, потім на наступних доданках тощо.
- Потім застосовуйте описаний вище метод рекурсивно на аргументах кожної застосованої функції .
наприклад, якщо n = 3, ми виконуємо такі маніпуляції:
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
1 + d( 1 ) + d( 1 + 1 ) + d( 1 + 1 + 1 + 1 )
1 + d( 1 ) + d( 1 + d(1) ) + d( 1 + d( 1 ) + d( 1 +d( 1 ) ) )
За допомогою динамічного програмування я можу генерувати термін, використовуючи вищезазначений метод за часом , що знову ж таки не є кращим за наївне рішення.
EDIT 1
Ще одне, що можна спостерігати, це те, що . Наприклад, . Але я не в змозі скористатися цим пунктом. Я знову спробував знайти лінійне відношення рецидиву (для матричної експоненції), але не можу його знайти.
EDIT 2
Далі наводиться графік, коли послідовність побудована для меншого діапазону (спочатку наводяться членів послідовності).
PS: Я знаю, що недоцільно запитувати рішення у Project Euler. Але я просто хочу нового напрямку чи підказки, оскільки я рухаюся по колах останні кілька днів. Якщо це теж неприйнятно, я можу зняти питання, якщо це буде запропоновано.
You are given a106 = 31054319.
в оригінальній проблемі Ейлера є натяк.