Soru Sayılar - Basamak Analizi - Programlama (Kısa bir çözüm yapamadım)

Konusu 'Doğal Sayılar,Tam Sayılar,Bölme Bölünebilme,EBOB-EKOK' forumundadır ve Honore tarafından 28 Haziran 2019 başlatılmıştır.

Yüklüyor...
  1. Honore

    Honore Yönetici

    Mesajlar:
    3.437
    Beğenileri:
    379
    Cinsiyet:
    Bay
    Meslek:
    Müh. (Elk./Bilg.)
    [​IMG]
    https://i.ibb.co/z23BnvG/ikive-soru.png
    https://scontent-vie1-1.xx.fbcdn.ne...=986e6a082afb7bddaadea547bb43a180&oe=5DC711C6
    https://www.facebook.com/photo.php?fbid=859619701060312&set=gm.2845245532214284&type=3&theater

    Elle çözüm için pratik bir yaklaşım düşünemedim. Farklı ve mümkünse daha kısa çözümler göndermek isteyenlere şimdiden çok teşekkürler.
    Kod:
    Bir basamaklı sayılar;          _, 3 tane
    İki basamaklı sayılar;        _ _, 2·3 = 6 tane (3 + 6 = 9'ncu sayı: 33)
    Üç basamaklı sayılar;       _ _ _, 2·3·3 = 18 tane (9 + 18 = 27'nci sayı: 333)
    dört basamaklı sayılar;   _ _ _ _, 2·3·3·3 = 54 tane (27 + 54 = 81'nci sayı: 3333)
    beş basamaklı sayılar;  _ _ _ _ _, 2·3·3·3·3 = 243 tane (81 + 243 = 324'ncü sayı: 33333)
    ...
    olup bu yapıya göre;
    28'nci sırada dört basamaklı ilk sayı olan: 2000
    28 + (27 - 1) = 54'ncü sırada: 2333
    dört sıra geriye gidilince;
    53'ncü sırada: 2332
    52'nci sırada: 2330
    51'nci sırada: 2323
    50'nci sırada: 2322....(I)

    82'nci sırada beş basamaklı ilk sayı olan: 20000
    Kod:
    20000 -----> 82'nci sırada
        2
        3
    20020
        2
        3
    20030
        2
        3
    20200
        2
        3
    20220
        2
        3
    20230
        2
        3
    20300 ----> 100'ncü (sonuncu) sırada....(II)
    (II) - (I) yazılarak fark: 20300 - 2322 = 17978
    ---
    Bilgisayar programlamayla ilgilenen öğrenciler için Fortran uygulaması:
    [​IMG]
    https://i.ibb.co/SckB4Lf/ikive-Fortran.png

    Program:
    Kod:
    program ikiveuc
    implicit none
    integer :: n=4,i,j,birler,onlar,yuzler,binler,onbinler
    integer :: sayilar(33333)
    
    open (unit = 1, file = "sayilar.txt")
    
    sayilar(1)=0
    sayilar(2)=2
    sayilar(3)=3
    
    do i=20,33
       birler=mod(i,10)
       onlar=mod(i/10,10)
       if ((birler==0).or.(birler==2).or.(birler==3)) then
          if ((onlar==2).or.(onlar==3)) then
              sayilar(n)=i
              n=n+1
          endif
       endif
    enddo
    
    do i=200,333
       birler=mod(i,10)
       onlar=mod(i/10,10)
       yuzler=mod(i/100,10)
       if ((birler==0).or.(birler==2).or.(birler==3)) then
          if ((onlar==0).or.(onlar==2).or.(onlar==3)) then
             if ((yuzler==2).or.(yuzler==3)) then
                    sayilar(n)=i
                    n=n+1
              endif
          endif
       endif     
    enddo
    
    do i=2000,3333
       birler=mod(i,10)
       onlar=mod(i/10,10)
       yuzler=mod(i/100,10)
       binler=mod(i/1000,10)
       if ((birler==0).or.(birler==2).or.(birler==3)) then
          if ((onlar==0).or.(onlar==2).or.(onlar==3)) then
             if ((yuzler==0).or.(yuzler==2).or.(yuzler==3)) then
                if ((binler==2).or.(binler==3)) then
                    sayilar(n)=i
                    n=n+1
                endif
             endif
          endif
       endif     
    enddo
    
    do i=20000,33333
       birler=mod(i,10)
       onlar=mod(i/10,10)
       yuzler=mod(i/100,10)
       binler=mod(i/1000,10)
       onbinler=mod(i/10000,10)
       if ((birler==0).or.(birler==2).or.(birler==3)) then
          if ((onlar==0).or.(onlar==2).or.(onlar==3)) then
             if ((yuzler==0).or.(yuzler==2).or.(yuzler==3)) then
                if ((binler==0).or.(binler==2).or.(binler==3)) then
                   if ((onbinler==2).or.(onbinler==3)) then
                    sayilar(n)=i
                    n=n+1
                    if (n==101) exit
                   endif
                endif
             endif
          endif
       endif     
    enddo
    
    write(1,10) "Sira No     Sayi"
    write(1,10) "-------    ------"
    
    do j=1,n-1
      write(1,20)' ',j,'      ',sayilar(j)
    enddo
    
    write(1,10)''
    write(1,25)'Fark: ',sayilar(n-1),' - ',sayilar(50),' = ',sayilar(n-1)-sayilar(50)
    write(6,30)'Fark: ',sayilar(n-1)-sayilar(50),' sayilar.txt dosyasinda'
    
    close(1)
    
    10 format(a)
    20 format(a,i3,a,i5)
    25 format(3(a,i5))
    30 format(a,i5,a,/)
    
    end program
    Not: Programın çıktısı olan sayilar.txt dosyası ektedir.

    Ekli Dosyalar:

    Son düzenleme: 28 Haziran 2019
     
    : Fortran

  2. Benzer Konular: Sayılar Basamak
    Forum Başlık Tarih
    Matematik - Geometri Üstel sayılar - Logaritma - Basamak Sayısı 2 Haziran 2019
    Matematik - Geometri Doğal Sayılarla Çarpma - İki Basamaklı Çarpanlara Ayırma 30 Ocak 2019
    Matematik - Geometri Üç Basamaklı Sayılarda Basamak Analizi 7 Ekim 2018
    Matematik - Geometri Ardışık Sayılarda Basamak Analizi 1 Ekim 2018
    Matematik - Geometri Basamak Analizi - Cebirsel Özdeşlikler - Üstel Sayılar 4 Temmuz 2018

Sayfayı Paylaş