Hanya karena ketertarikan saya mencoba memecahkan masalah dari kategori "Baru-baru ini" dari Project Euler ( urutan Digit Sum ). Tetapi saya tidak dapat memikirkan cara untuk menyelesaikan masalah secara efisien. Masalahnya adalah sebagai berikut (dalam urutan pertanyaan asli memiliki dua yang di awal, tetapi tidak mengubah urutan):
Urutan Digit Sum adalah 1,2,4,8,16,23,28,38,49 .... di mana istilah adalah jumlah digit sebelum itu dalam urutan. Temukan istilah urutan. 10 15 t h
Solusi naif tidak dapat diimplementasikan karena membutuhkan banyak waktu. Saya mencoba untuk mengurangi masalah untuk kasus matriks eksponensial (yang akan memakan waktu jumlah waktu) tetapi tidak dapat datang dengan perulangan seperti itu pas kriteria linier sebagai perulangan untuk urutan ini adalah cukup aneh. Dapat dilihat bahwa urutannya diatur oleh perulangan:
di mana adalah istilah dari urutan dan adalah fungsi yang ketika diberi nomor alami sebagai input mengembalikan jumlah digit nomor (mis. ). Pendekatan kedua saya adalah mencoba menemukan beberapa pola dalam urutan. Dapat dilihat bahwa beberapa istilah pertama dari urutan dapat ditulis sebagai
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 ) ) ) )
Dari pola di atas, istilah urutan dapat dihasilkan dengan metode berikut:
- Tulis dengan simbol tambahan di antara mereka.
- Meninggalkan pertama , lalu menerapkan fungsi pada istilah berikutnya lalu pada istilah berikutnya, lalu pada istilah berikutnya dan seterusnya.
- Kemudian menerapkan metode di atas secara rekursif pada argumen masing-masing fungsi diterapkan.
misalnya jika n = 3 kami melakukan manipulasi berikut:
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 ) ) )
Dengan pemrograman dinamis saya dapat menghasilkan istilah menggunakan metode di atas dalam waktu , yang lagi-lagi tidak lebih baik daripada solusi naif. O ( l o g ( 2 10 15 ) )
EDIT 1
Hal lain yang dapat diamati adalah bahwa . Misalnya . Tetapi saya tidak dapat menggunakan poin ini. Saya kembali mencoba menemukan hubungan perulangan linear (untuk matriks eksponensial), tetapi saya tidak dapat menemukannya.d ( a 6 ) = d ( 23 ) = d ( 32 ) = 5
EDIT 2
Berikut ini adalah grafik ketika urutan diplot untuk rentang yang lebih kecil ( istilah urutan pertama diplot).
PS: Saya tahu tidak disarankan untuk meminta solusi dari Project Euler. Tapi saya hanya ingin arah atau petunjuk baru, karena saya telah bergerak berputar-putar selama beberapa hari terakhir. Jika itu juga tidak dapat diterima, saya dapat menghapus pertanyaan jika disarankan.
You are given a106 = 31054319.
dalam masalah Euler asli adalah petunjuk.