Hoşgeldiniz, sadece sorulara bakmayın, üye olun, biz soralım siz çözün, hatta siz de sorun biz de çözelim!

Fibonacci Dizisinin Rakamları

+1 oy
29 gösterim
27 Mayıs best of Toy (226 puan) sordu

Fibonacci dizisi, her sayının kendinden öncekiyle toplanması sonucu oluşan bir sayı dizisidir.

Sıfırdan başlatılması durumunda bu dizinin ilk 10 terimi: 0,1,1,2,3,5,8,13,21,34.

 

Fibonacci dizisinin ilk hangi teriminde tüm rakamlar en az bir kez kullanılmıştır?

(Örneğin; 2.ve 3. terimler olan 1 sayısında sadece "1" rakamı, 8.terim olan 13 sayısında "1 ve 3" rakamları, 16.terim olan 610 sayısında ise "0,1 ve 6" rakamlarının kullanıldığı görülmektedir.)

 

* Fibonacci dizisi: Ortaçağın en yetenekli matematikçilerinden sayılan İtalyan matematikçi Leonardo Fibonacci tarafından tarafından bulunduğundan kendi adıyla anılan sayı dizisidir. Dizinin ilk sayı değeri 0, ikincisi 1 ve her ardışık elemanı da önceki iki elemanın değerinin toplamı alınarak bulunur ve bu halde 0,1,1(1+0), 2(1+1), 3(2+1), 5(3+2), 8(5+3), 13(8+5), ... şeklinde artar.

1 cevap

+1 oy
27 Mayıs helloworld Toy (247 puan) cevapladı
30 Mayıs helloworld seçti
 
En İyi Cevap

Kod harici çözümü nasıl olur bilemiyorum fakat küçük bir kod yazarak çözebiliyoruz;

Terim olarak 62. Terimine karşılık gelmektedir.

https://dotnetfiddle.net/93dDWF Kodu bu link üzerinden çalışarabilirsiniz.

using System;
					
public class Program
{
        static long  sayi = 1;
        static long  sayi2 = 1;
        static long yedek = 0;
        static int[] siklik = new int[10];

        static bool SayitoText()
        {
            long x = 0;

            for (int i = 0; i < 10; i++)
                siklik[i] = 0;

                for (int i=0;i<Convert.ToInt64(Math.Log10(sayi2))+1;i++)
            {
                x = (sayi2/Convert.ToInt64(Math.Pow(10,i)))%10;
                siklik[x]++;
            }

            for (int i = 0; i < 10; i++)
                if (siklik[i] == 0)
                    return false;

            return true;
        }
        static void Bakalim(int p)
        {
            
            if (SayitoText() == true)
			{
				 Console.WriteLine("Fibonacci Serisinde "+p+". terimde tüm rakamlar mevcuttur: "+sayi2);
				return;
			}
                yedek = sayi2;
                sayi2 = sayi + sayi2;
                sayi = yedek;
                Bakalim(p + 1);

            return;
        }
        static public void Main(string[] args)
        {
            Bakalim(3); //3. terimi bularak başlıyoruz 0,1,1'i pas geçtik.
        }
}

 

Sol beyine hoşgeldiniz! Burada daha önce benzerine rastlamadığınız sorularla karşılaşabilirsiniz...
...