Çözüldü Permütasyon - Kombinasyon - Programlama

Konusu 'Matematik - Geometri' forumundadır ve Honore tarafından 27 Ocak 2018 başlatılmıştır.

Yüklüyor...
  1. Honore

    Honore Yönetici Yönetici

    Mesajlar:
    11.195
    Beğenileri:
    652
    Cinsiyet:
    Bay
    Meslek:
    Müh. (Elk./Bilg.)
    9 tane madeni parasından 3'ü özdeş 10 kuruş, 3'ü özdeş 25 kuruş ve 3'ü özdeş 50 kuruş olan bir çocuk madeni 50 kuruşlar yan yana gelmeyecek şekilde bu paraları yan yana kaç farklı şekilde sıralayabilir?
    A) 280
    B) 350
    C) 560
    D) 700
    E) 900

    https://www.facebook.com/photo.php?fbid=189627941780734&set=gm.396169514148666&type=3&theater&ifg=1
    (Sorunun gönderildiği Facebook grubu 25 Eylül 2022 tarihinde "Private" duruma getirildiği için sorunun aslını ve varsa diğer çözümleri ancak üyeleri görebilir.)

    ÇÖZÜM - 1
    10 Kuruş: O ve 25 kuruş: Y ile gösterilirse toplam 6 bozuk para, 3'ü O ve 3'ü de Y olmak üzere tekrarlı permütasyonla 6! / (3!·3!) = 20 farklı şekilde dizilebilir ve bunlardan biri _O_O_O_Y_Y_Y_ dir. Kalan 7 boşluktan 3 tanesi C(7, 3) = 35 farklı şekilde seçilebileceğinden toplam 20·35 = 700 dizilişte 50 kuruşlar yan yana gelmez.

    ÇÖZÜM - 2
    3 tane 50 kuruş, 2 tanesi yan yana ve 1 tanesi ayrı bir para gibi olacak şekilde sıralamaların sayısı = 7! / (3!·3!·1!)
    3 tane 50 kuruşun yanyana olduğu sıralamaların sayısı = 7!·3! / (3!·3!·1!)
    Toplam: 9! / (3!·3!·3!) - 7! / (3!·3!·1!) - 7!·3! / (3!·3!·1!) = 700

    Bilgisayar Programlamayla İlgilenen Öğrenciler İçin Fortran Uygulaması:
    [​IMG]
    https://i.ibb.co/QpLPwfp/Madeni-Para-Fortran.png

    Program:
    Kod:
    program siralama
    implicit none
    ! 10 kuruşlar 1 sayısıyla,
    ! 25 kuruşlar 2 sayısıyla,
    ! 50 kuruşlar 3 sayısıyla gösteriliyor.
    !
    ! i değişkeninde sayılar tutuluyor.
    !
    ! bir, iki, uc, dort, bes, alti, yedi, sekiz, dokuz değişkenlerinde
    ! her sayı için soldan başlamak üzere sırasıyla;
    ! yuz milyonlar, on milyonlar, milyonlar, yuzbinler, on binler, binler,
    ! yuzler, birler basamakları tutuluyor.
    !
    ! toplam değişkeninde sıralamaların sayısı tutuluyor.
    !
    ! birler değişkeninde 10 kuruşların sayısı
    ! ikiler değişkeninde 25 kuruşların sayısı tutuluyor
    integer :: i,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz,toplam=0
    integer :: birler=0,ikiler=0
    
    open (unit = 1, file = "sayilar.txt")
    
    do i=111222333,333222111
    
         bir=i/10**8
         iki=mod(i/10**7,10)
         uc=mod(i/10**6,10)
         dort=mod(i/10**5,10)
         bes=mod(i/10**4,10)
         alti=mod(i/10**3,10)
         yedi=mod(i/10**2,10)
         sekiz=mod(i/10,10)
         dokuz=mod(i,10)
    
      if ( (bir<4).and.(bir>0).and.(iki<4).and.(iki>0).and.                &
           (uc<4).and.(uc>0).and.(dort<4).and.(dort>0).and.                &
           (bes<4).and.(bes>0).and.(alti<4).and.(alti>0).and.              &
           (yedi<4).and.(yedi>0).and.(sekiz<4).and.(sekiz>0).and.          &
           (dokuz<4).and.(dokuz>0) ) then
    
    !50 kuruşların yan yana gelmemeleri sağlanıyor.
            if ( ((bir==3).and.(iki==3)).or.((iki==3).and.(uc==3)).or.     &
                 ((uc==3).and.(dort==3)).or.((dort==3).and.(bes==3)).or.   &
                 ((bes==3).and.(alti==3)).or.((alti==3).and.(yedi==3)).or. &
                 ((yedi==3).and.(sekiz==3)).or.((sekiz==3).and.(dokuz==3)) &
               ) then
     
                 cycle
    
             endif
    
    !Kuruşların her grupta tam 3 tane olma kontrolu yapılıyor.
             if (bir+iki+uc+dort+bes+alti+yedi+sekiz+dokuz == 18) then
    
    !10 kuruşların her sıralamada sadece 3 tane olma kontrolu yapılıyor.
                     if (bir==1) then
                        birler = birler + 1
                     endif
         
                     if (iki==1) then
                        birler = birler + 1
                     endif
         
                     if (uc==1) then
                        birler = birler + 1
                     endif
         
                     if (dort==1) then
                        birler = birler + 1
                     endif
                       
                     if (bes==1) then
                        birler = birler + 1
                     endif
         
                     if (alti==1) then
                        birler = birler + 1
                     endif
         
                     if (yedi==1) then
                        birler = birler + 1
                     endif
         
                     if (sekiz==1) then
                        birler = birler + 1
                     endif       
         
                     if (dokuz==1) then
                        birler = birler + 1
                     endif
    
    !25 kuruşların her sıralamada sadece 3 tane olma kontrolu yapılıyor.  
                     if (bir==2) then
                        ikiler = ikiler + 2
                     endif
         
                     if (iki==2) then
                        ikiler = ikiler + 2
                     endif
         
                     if (uc==2) then
                        ikiler = ikiler + 2
                     endif
         
                     if (dort==2) then
                        ikiler = ikiler + 2
                     endif
                       
                     if (bes==2) then
                        ikiler = ikiler + 2
                     endif
         
                     if (alti==2) then
                        ikiler = ikiler + 2
                     endif
         
                     if (yedi==2) then
                        ikiler = ikiler + 2
                     endif
         
                     if (sekiz==2) then
                         ikiler = ikiler + 2
                     endif       
         
                     if (dokuz==2) then
                        ikiler = ikiler + 2
                     endif
    
    !Her sıralamadaki 10 ve 25 kuruşların üçer taneden fazla olmadıkları
    !kontrol ediliyor.
                     if ( (birler <= 3).and.(ikiler <= 6)) then
                        toplam=toplam+1
                        print*,toplam,'    ',i
                        write(1,5)toplam,'       ',i
                        birler=0
                        ikiler=0
                      endif
       
             else
    
                birler=0
                ikiler=0
                cycle
      
             endif
    
      else
        cycle
      endif
    
    enddo
    
    close(1)
    
    print*,''
    print*,toplam,' adet dizilim olabilir. sayilar.txt dosyasina bakiniz.'
    print*,''
    
    5 format (i4,a,i9)
    
    end program
    Tüm sıralama listesi ektedir.

    Ekli Dosyalar:


  2. Benzer Konular: Permütasyon Kombinasyon
    Forum Başlık Tarih
    Polinomlar, Permütasyon, Kombinasyon, Olasılık ve Binom Açılımı Faktöriyel - Tekrarlı Permütasyon - Kombinasyon - Olasılık - Rasyonel Sayılarla Sadeleştirme 13 Temmuz 2024
    Polinomlar, Permütasyon, Kombinasyon, Olasılık ve Binom Açılımı Kombinasyon - Permütasyon 24 Ekim 2022
    Polinomlar, Permütasyon, Kombinasyon, Olasılık ve Binom Açılımı Olasılık - Permütasyon - Kombinasyon - Faktöriyel - Üstel Sayılar 4 Nisan 2022
    Polinomlar, Permütasyon, Kombinasyon, Olasılık ve Binom Açılımı Türkçe - Permütasyon - Kombinasyon - Faktöriyel - Olasılık 28 Ocak 2022
    Polinomlar, Permütasyon, Kombinasyon, Olasılık ve Binom Açılımı Olasılık - Kombinasyon - Permütasyon 15 Temmuz 2020

Sayfayı Paylaş