Çözüldü Kalanlar Toplamı - Bilgisayar Programlama

Konusu 'İlginç ve Sıradışı Çözümler' forumundadır ve Cem tarafından 6 Ekim 2010 başlatılmıştır.

Yüklüyor...
  1. Cem

    Cem Yönetici Yönetici

    Mesajlar:
    3.497
    Beğenileri:
    1.116
    Bir soru:

    y ve z sıfırdan farklı rakamlar olmak üzere, (xyz28) beş basamaklısının 36 ile bölümünden kalan sayının alabileceği değerler toplamı kaçtır?

    A) 105
    B) 120
    C) 144
    D) 180
    E) 216
    Honore bunu beğendi.
     
    : Fortran

  2. Benzer Konular: Kalanlar Toplamı
    Forum Başlık Tarih
    TOEFL - IELTS - SAT - ACT - GRE - GMAT Hazırlık Panvoid of a Function (Tanımsızlık Oluşturan Değerlerin Toplamı) - Factoring (To be mentally solved) Cuma 10:14
    Limit ve Süreklilik,Türev,İntegral Seri Toplamından Riemann İntegraline Geçiş (YKS'de yok) 31 Ağustos 2025
    Limit ve Süreklilik,Türev,İntegral Sonsuz Terimli Trigonometrik Toplamın Limitinden Riemann İntegraline Geçiş - Trigonometri 19 Temmuz 2025
    Trigonometri,Karmaşık Sayılar,Logaritma,Parabol Trigonometrik Toplamın Çarpıma Dönüştürülmesi - Trigonometrik Denklem - Çarpanlara Ayırma 1 Temmuz 2025
    Ivır Zıvır Sorular - Sohbet (Trivial Questions - Chat) Doğal Logaritma Tabanının Seri Toplamıyla Bulunuşu - Faktöriyel - Toplam Sembolü 24 Mayıs 2025

  3. coşkun

    coşkun Yeni Üye

    Mesajlar:
    160
    Beğenileri:
    16
    bir çözüm;

    xyz28=xyz.100+28 in 36 ile bölümünden kalan çarpanların ve toplamların kalanına eşittir.
    100 ün 36 ile bölümünden kalan 28
    xyz.28+28 xyz28 e eşittir.(tabii mod 36 da)
    28(xyz+1) diye toparlarsak kalan sayının 28 in katı olduğunu anlarız. Tabii bu kat 36'yı geçemeyeceğinden tekrar kalanlara bakmamız gerekecek.
    kısa keseyim...
    aradığımız elemanlar 28'in katlarının mod 36'daki değerleridir.
    28.1=28=28 mod36
    28.2=56=20 mod36
    28.3=84=12 mod36 (dikkat ederrsek sayı 8 er 8 er küçülüyor.)
    .............4
    .............32
    .............24
    .............16
    .............8
    .............0 bundan sonra tekrar başa döneriz.
    istenen sayıların toplamı da
    28+20+12+4+32+24+16+8+0=144 olur
    heralde...

    biraz uzun oldu galiba...sağlık olsun...
    varsa kısa yolu merak ediyorum...
    Son düzenleyen: Moderatör: 28 Temmuz 2025
    Honore bunu beğendi.
  4. Cem

    Cem Yönetici Yönetici

    Mesajlar:
    3.497
    Beğenileri:
    1.116
    Tebrikler Çoşkun Hocam.

    (4,9)=1 ve 4.9=36 olduğundan 4 ve 9 ile bölümden kalanlar incelenecektir. Bunların ortak kalanları istenen sayılar olacaktır. 9 ile bölümden kalanları incelemek daha zordur, çünkü bilinmeyen rakamlar vardır, bu sebeple 4 ile bölümden kalanları incelemek yeterlidir. Burada y ve z'nin sıfırdan farklı olması bilgisinin hiç bir önemi yoktur, illâ ki bu kalanları veren y ve z rakamları bulunacaktır. Yâni kafa karıştırıcı bir nüans olarak verildi. Yine bilinmeyen rakamlardan dolayı 9 ile bölümden kalanlar da 4 ile olanlara eşit olarak illâ ki bulunacaktır.
    28:4'den kalan 0'dır. Artık 4 modunda 36'ya kadar ilerleyeceğiz-atlamalar yapacağız, bunlar istenen kalanlardır:
    0 ---> 0,4,8,12,16,20,24,28,32 ve toplam 144 bulunur.
    Bu kalanlar "kaç tanedir" diye sorulsaydı cevap 9 olacaktı.
    Honore bunu beğendi.
  5. Honore

    Honore Yönetici Yönetici

    Mesajlar:
    10.467
    Beğenileri:
    652
    Cinsiyet:
    Bay
    Meslek:
    Müh. (Elk./Bilg.)
    Mühendislik, bilim ve tabii ki matematik problemlerinde bilgisayar programlamayla ilgilenen öğrenciler için çorbada Fortran tuzu da bulunsun.
    [​IMG]
    https://i72.servimg.com/u/f72/19/97/10/39/kalanl10.png

    Program:
    Kod:
    ! y ve z sıfırdan farklı rakamlar olmak üzere, (xyz28) beş basamaklısının
    ! 36 ile bölümünden kalan sayının alabileceği değerler toplamı kaçtır?
    ! Yanıt: 144
    program kalanlar
    implicit none
    integer :: i = 0, j, k = 0, p, temp, x, y, z, xyz28(9**3), toplam(9**3)=0
    integer :: kalanlar_toplami = 0
    integer, allocatable :: res(:)
    
    do x = 1, 9
       do y = 1, 9
          do z = 1, 9
             i=i+1
             xyz28(i) = x*10000 + y*1000 + z*100 + 28
             toplam(i) = toplam(i) + MOD(xyz28(i), 36)
           enddo
        enddo
    enddo
    
    allocate (res(SIZE(toplam))); res(1) = toplam(1)
    
    do j=1,i
       if (any(res == toplam(j))) cycle
       k = k + 1
       res(k) = toplam(k)
    enddo
    
    print*,''; write(*,fmt='(a,i3,a,/)') 'Farkli kalanlarin sayisi:',k,' adet.'
    
    do j=1,k-1
       do p=j+1,k
          if (res(j) < res(p)) cycle
          temp=res(j)
          res(j)=res(p)
          res(p)=temp
        enddo
    enddo
    
    do j=1,k
       kalanlar_toplami=kalanlar_toplami+res(j)
       write(6,10)j,"    ",res(j)  
    enddo
    
    print*,''; write(*,fmt='(a,i3)') 'Kalanlarin Toplami: ',kalanlar_toplami
    
    deallocate (res)
    
    10 format(2(i3,a))
    
    end program

Sayfayı Paylaş