Sadece ilgi dışında Project Euler ( Digit Sum dizisi ) "Recent" kategorisinden bir sorunu çözmeye çalıştım . Ancak sorunu etkili bir şekilde çözmenin bir yolunu düşünemiyorum. Sorun aşağıdaki gibidir (orijinal soru dizisinde başlangıçta iki sorun vardır, ancak diziyi değiştirmez):
Burada Rakam Miktar sekansı .... 1,2,4,8,16,23,28,38,49 olan dizisinin terimi toplamı basamak dizisi içinde önceki. Dizinin terimini bulun .
Saf çözüm uygulanamaz çünkü çok zaman alır. Sorunu bir matris üssü vakasına indirmeye çalıştım (bu zaman alır), ancak bu sekans için rekürrens oldukça uygun olduğu için doğrusal kriterlere uyan böyle bir tekrarlama bulamadım tuhaf. Sekansın nüksetme tarafından yönetildiği görülebilir:
burada olup , n t h dizisinin süreli ve d (örneğin sayının rakamlarının giriş döner toplamı olarak doğal bir numara verilir bir fonksiyonudur. ). İkinci yaklaşımım dizide bir örüntü bulmaya çalışmaktı. Dizinin ilk birkaç teriminin şu şekilde yazılabileceği görülebilir:
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 ) ) ) )
Yukarıdaki modelden , dizinin terimi aşağıdaki yöntemle üretilebilecektir:
- Aralarına ek sembol ile 1 yazın .
- İlk çıktıktan sonra d işlevini sonraki 2 0 terimine, ardından sonraki 2 1 terimine, ardından sonraki 2 2 terimine uygulayın.
- Ardından, uygulanan her işlevinin bağımsız değişkenlerine yukarıdaki yöntemi yinelemeli olarak uygulayın.
örneğin n = 3 ise aşağıdaki manipülasyonları gerçekleştiririz:
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 ) ) )
Dinamik programlama ile , tekrar saf çözeltiden daha iyi olmayan O ( l o g ( 2 10 15 ) ) zamanında yukarıdaki yöntemi kullanarak terimini üretebilirim.
DÜZENLEME 1
Gözlemlenebilecek başka bir şey de . Örneğin d ( a 6 ) = d ( 23 ) = d ( 32 ) = 5 . Ama bu noktadan yararlanamıyorum. Yine (matris üssü için) doğrusal bir yineleme ilişkisi bulmaya çalıştım, ama bulamıyorum.
DÜZENLEME 2
Sekansı, daha küçük bir aralığı için çizilmiştir grafiktir aşağıda (ilk dizisinin koşulları çizilmiştir).
Not: Project Euler'den çözüm istemenin tavsiye edilmediğini biliyorum. Ama son birkaç gündür daireler çizdiğim için sadece yeni bir yön veya ipucu istiyorum. Bu da kabul edilemez durumdaysa, soruyu kaldırabilirim.
You are given a106 = 31054319.
Orijinal Euler probleminde bir ipucu olduğunu hissediyorum .