pRJ euler'de soruyu çözme süresi olayı şöyle yalnız, soru yayınlanır yayınlanmaz süre işliyor, takip etmeniz yakalamanız ve hemen çözmeye başlamanız lazım, soru yayınlandıktan 5 saat sonra soruyu görüp 30 dk da çözersen 5.5 saatte çözmüş görünürsün. o listede soruyu daha hızlı çözmüş olanlar olabilir ama geç girdiyse cevabı belli olmaz bu durum. Ama Prj euler sayfasında sonraki sorunun ne zaman yayınlanacağını da söylüyor. O konuda bir adaletsizlik yok.
benim çok matematik bilgim yok ama bölme hakkında söyle bir şey biliyorum: bir sayının kalanının o sayının bir katıyla çarpıp yine aynı sayıya bölürsek katı olan sayının o sayıyla bölümüne tekabül ediyor Örnek: 81mod 11 = 4 5 katı olsun mesale 4.5=20 20/11=9 burdan gördüğmüz gibi 5 katının moduyla kalanların modu arasında bağlantı var sağlaması 405-11=9 7 üssü 77 sonucundan yola çıkarak belli bir örüntüyle toplamla belki tekrar ile cevap gelebilir
Ancak buradaki problem sadece arbitrary precision matematik değil, stack overflow ana problem. Ama güzel tavsiye. DÜZELTME: Algoritmanın ensonki halini C'de arbitrary precision kullanmadan implement etmek mümkün değil. Çünkü günümüz 64-bit bilgisayarlarında hiçbir native data type bu kadar büyük bir sayıyı deskteklemiyor. Eğer o Japon arakdaşlar bir APM kütüphanesi kullanmadan çözdüler ise muhtemelen problemi daha basit bir forma indirgemiş olmalılar.
@@semihartan Cevabı mod (10^9 + 7) tabanında istediği için Unsigned 32 bit int'e sığar hocam :) arbitrary precision'a bu yüzden gerek yok, düşünmüşler o kısmı soruyu yazarken
O üstten kurtarmadan o iş olmaz gibi :P 1. Düz bir loop ile (buna Dynamic Programming ile bakarsak da böyle bir şey çıkar) P(0),P(1),P(2) diye sayarak gidemeyeceğimiz kadar uzak bir sayı 2. Yukardan bölerek (2n) -> (n) , (2n-1) tipi gitsek de ağaç hemen açılacağı için çok büyüyor hemen, yukardaki ile benzer sebeplerden bir şekilde o 777'yi ya azaltmak lazım, ya da modulo'nun avantajını kullanmak gerek (32-bit unsigned int'e sığıyor o modulo değeri, arbitrary precision ya da BigInt benzeri bir şeye aslında gerek yok sorun sadece memory'mizin veya loop süremizin yetmemesi)
Herkese iyi bayramlar emeğinize sağlık.. Bu tip programlamaya yönelik çözüm deyince 8 sene google code jam birincisi c++ uzmanı beyaz rus Gennady Korotkevitch aklıma geliyor...
Ben yeni bir programlama dili öğrenmek 1'den başlayarak tekrar tekrar çözüyorum. Gerçekten o dili öğrenmeye yardımcı oluyor. C++ bu dillerden değil ama c++ kodu yazmama da etkisi oldu diyebilirim. Nasıl efektif kod yazılır çok yardımcı olan problemler oluyor. 890. soru daha önce yayınlanmış bazı problemlere benziyor, muhtemelen oradan gelen bilgi sayesinde o kadar hızlı çözebiliyorlar. Acaba yapay zekadan da yardım alıyorlar mı diye de şüphe etmiyor değilim. Ayrıca bulutta çok güçlü hesaplama yapma olanaklarına da ulaşmak mümkün. Belki öyle bir yardım da almış olabilirler.
Aşırı yüksek powerlar aslında mod alınabildiği zaman Python ile çözülebiliyor, Euclid algoritmasının varyasyonlarıyla. Zamanında dersini almıştım da kütüphaneyi şimdi bulamadım. Şu soruyu çözüp tekrar yazacağım, kütüphaneyi bulduktan sonra.
Bir süredir kendimi sağlam bir matematik ve fizik öğretmeye başladım, Proj. Euler'i görmem hoşuma gitti, bir yazılım mimarı olarak matematik bilgimi daha da arttırmam gerek, acaba P.E projesi matematği geliştirme de ne akdar yardım eder. Neredeyse per-intermatiate bir matematik bilgisi için söylüyorum bunu yalnız.
Sayılar teorisinin temellerini öğrenme konusunda kesinlikle çok işinize yarayacaktır fakat bazı sorular çok üst düzeyde kalabilir. Belli bir kitabı ya da ders programını takip ederseniz destekçi olarak kullanabilirsiniz.
@@derincesi Teşekkürler, şu an bir video serisi üzerinden çalışıyorum yabancı bir kanal, Michel van biezen tavsiye ederim. 10K video var içeride bakın derim. Sayılar teorisini not aldım. müsait bir zaman da gereki kitapları inceleyip, okuyup, kafa yorup devam edeceğim lakin önce halletmem gereken bazı konular var tabi ki.
6 місяців тому
Selamlar, videolarınızı çok beğeniyorum. Siz problem çözünce ben de çözmüş kadar oluyor ve kendimi zeki hissediyorum.
merhabalar, yazdığınız formüle göre bana p(16) ya da p(512), p(1024) gibi değerlerin sonuçlarını atabilir misiniz, formülünüzü koda dökmeyi denedim ama p(8) e kadar doğru cevap vermesine rağmen p(16) da farklı değerler vermeye başladı, sanırım ben yanlış kodlamış olabilirim, eğer siz koda döktüyseniz ne yazdığınızı gösterebilir misiniz?
6 місяців тому
@@EmreAkdeniz42 kapat kapat yanlış saymışım sorry asdasdasd
@@EmreAkdeniz42 ya parmak hesabı bir farkla kaçırmışım dsfksdf pattern bulmaya çalışıyorum. ama sanki exponential bir bağıntı bulunması gerekiyor gibi. yoksa lineer olarak ulaşılamıcak.
6 місяців тому
@@matematikzekas5152 evet lineer ilişki bu şekilde, ancak 7^777 gibi büyük bir sayıya bu ilişki ile ulaşmak makineyi kanırtıyor. işi kısaltacak başka bir örüntü bulmak gerekiyor.
Belirtmek istiyorum ikinin katlarına şu şekilde ulaşılabilir 1 sıralanır ise artırılabilir hızlanma yapılabilir yani ikinin katları yazılırken sıralanmayacak ise sola düşerken ikinin katları olarak düşebilir yani sola doğru bir rakamları 2elde edilene kadar dolup sonrada baştakiler en sola eşit olarak yayılarak yapılabilir ama 3 tane node ihtiyaç var tabi ki
merak edenler için 7^777=437700548734202700764895770266348348092832914249674791140665053626929347534202351106020194155443513839456325721913630105201068498522094093221194452990640962260851974156879592063227479801027937390173618458318292060462312561904872921404996347914903220371579120904290547306774449767219823345201862426316157793360495888933222475962390346573965120335848047904096834577873930030196154468742640594192857019928005691001294411855008790451493917938269917967228129913242997115959934794588199409510967575780170388844996513211079070059269245208385656837790466645171164678909615879630570320541997297378507539586919388988019437117684585097884685751563283203545236625979207 eşittir.
İç içe geçmiş toplamlardan oluşan formüle bakarsak P(n) < 2*4*8*16*...n/2 gibi bi upper bound söyleyebiliyoruz sanırım. Bu da n^logn gibi bişe yapıyor. Bu aynı zamanda bu döngüyü hesaplayan naive algoritmanın time complexity'sine bi üst limit (muhtemelen gerçek complexity'e yakın bi limit). Quasi-polynomial time bi algoritma olması kuvvetle muhtemel yani.
Tahminimce 7 nin katlari icin S’e bagli baska bir baglanti vardir. O baglanti bulundugunda sadece 777 defa donmesi gereken bir donguye ihtiyaciniz olacaktir. Ayrica ozyineleme yerine dinamik programlama yaklasimlarina bakin yoksa ozyineleme vs ile bu sorunun cozumu icin cok fantastik bir baginti bulunmasi gerekicektir.
Anlatımdan sezdiğim kadarıyla p(n) ile 2nin kuvvetleri arasında bir bağ oluşturmak mümkün. Küçük bi araşdırma yaptım ve buna ait makale ve yazılar buldum. 7^777 ni 7nin 2 esastan loqarifmini 777 ile çarparak 2 nin kuvveti gibi yaza ve sonucu p(2^k) şeklinde araya bilirsiniz. Bu hesablamanı hızlı yapa bilir. Lakin japonların hangi bilgisayarı kullandığına emin değiliz))
Benim bu kanala emek vermiş ve kanalın sahibi veya sahiplerine bir sorum var matematikçi olmak için matematikle derin bir duygusal bağ beslemek gerekiyor arkadaşlara sorum şu bu bağ nasıl oluştu ? İsterseniz bununla ilgili bir içerikte çekebilirsiniz böylece matematiği sevmeyen veya sevmeye çalışan insanlara da yardımcı olmuş olursunuz Not: Bu soruyu sormamdaki sebep şu kanalınızı izlediğimde matematiği seviyorum ve beni büyülüyor içine çekiyor fakat gidip ösym problem sorularını çözmem gerektiği için onları öğrenmeye çalıştığımda matematiğin tüm büyüsü ve sevgisi kaçıyor öğrenmemi zorlaştırıyor bu durum.
İçerik için teşekkürler. Özyinelenen (recursive) fonksiyonlar bu tür problemlerde çözüm olmaz. Çünkü 7 üzeri 777 için belki yeterli hafıza alanına sahip bir bilgisayar olabilir ama 10 üzeri 80 için evrendeki atomların sayısı yeterli gelir mi diye bir düşünmeli. Çözüme giden yolun ilgi çekici, fikrimce öz yinelemeli fonksiyonları kullanırken her işlemin sonucunu hafızada tutmak yerine her işlem için bulunan sonucu bir değişkende toplaman olabilir. Tabi bu toplam değer yine çok büyük bir sayı olabilir, büyük sayıların ifade biçimini de sana bırakıyorum. Logaritmik fonksiyonlar işlem süresini azaltıyor, bunu fark etmiş olman çok güzel. Sonradan aklıma geldi; p(7^7) mod 10^9+7 ile sonuç eşleşmesi yapıp, p(7^777) mod 10^9+7 değerini istiyorlar. İşte büyük sayının ifade ediliş biçimi. Algoritmada mod kullanımı hafızada yer artırmaya değil azaltmaya yönelik bir işlem. İyi bir tüyo. Bu problem ile kayıpsız sıkıştırılamayan verilerin kayıpsız sıkıştırılması hedeflenmiş gibi duruyor. Bunu başarabilenler muhtemelen büyük işler başarmış olmalılar.
Denediniz mi bilmiyorum ancak gmp kullanan bir Iterative DP C++ implementasyonu ile rahatca cozebilirsiniz diye dusunuyorum. Recursive olarak bulmak icin de birden fazla program iteration'ı kullanabilirsiniz. Yani belli bir sayiya kadar hesaplar, onun sonucu ile yeni bir program baslatabilirsiniz. Bunlar disinda elin japonu muhtemelen DP'de table filling dedigimiz isi parallel bir sekilde yaptirdi ondan bu kadar hizli bir sekilde sonuca ulasti :)
O(n log n) oluyor DP yaparsan çok yavaş. Ayrıca ellerinde süper bilgisayar yoksa paralel çalıştırmak da hiçbir işe yaramaz. Sayı çok büyük öyle DP ile çözülmez, alan yetmez zaten.
GMP'ye gerek yok modulo değeri uint32ye sığıyor da DP bi kere kesin patlar hocam 7^777 dediğiniz sayı gözlemlenebilir evrendeki atomların sayısından yaklaşık 10^600 kat daha fazla.. O üstü bir şekilde azaltmadan çözülmez gibime geliyor
@@tibetatakan Sorunun DP ile çözülemeyeceği doğru fakat DP O(nlogn) değil. f(2n) = f(n) + f(n-1) ... f(0) olduğu için, DP2 DP1'in (f(n)'i veren DP) prefix sum'ını tutacak şekilde başka bir DP yarattıktan sonra soruyu O(n)'de çözebiliriz.
@@xorgate667 Bir entry’i hesaplamak için O(1) vermişsin ve bu doğru değil. Düz prefix sum ile yapamazsın ki modifiye etmen lazım. Bulunduğun pozisyona n desek, n’e kadar olan bütün 2’nin kuvvetlerini bulup şunu toplaman lazım: DP[n - i] (burada i ikinin kuvveti ve her i için toplaman lazım) Sonuç DP[n]’in çözümü.Bu da her bir entry için O(log n) demek. Analizini yapmama gerek yok herhalde gayet akla yatıyor.
P(n) kısmı basit aşağıdaki gibi yaptım ama üssü nasıl azaltıcam veya nasıl bir algoritma kurucam ki stack overflow hatası almayayım. P(10000) e kadar 2 3 dakikada basıyor. public class BinaryPartitions { public static int partitionCount(int number) { if(number==0 || number==1) { return 1 ; } if(number%2==0) { return partitionCount(number-1) + partitionCount(number / 2); }else { int prev=getPreviousEvenNum(number); return partitionCount(prev); } } public static int getPreviousEvenNum(int number) { if(number%2==1) { return number - 1; } return number; } public static void main(String[] args) { // TODO Auto-generated method stub int upperLimit=1000; for(int i=0;i
Dostum evimde yeşil tahta var duvar boyu fakat tebeşirim çok fazla tahtamı beyazlatıyor bir önerin vs var mı ? Senin tahtan gibi nasıl yapabilirim ? :D
hocam eğer p(7^77)'nin sonucunu bikaç msde verip de p(7^777)'nin sonucunu 2 saat boyunca hesaplayamayan kodu python gibi daha üst seviyeli bir dille yazdıysa aynı kodu c veya c++ ta yazmayı dene sonuç alabilirsin, python hız açısından bu dillere göre dezavantajlı bayağı.
@@abdulkadiryilmaz9123 Program Maple dilinde memoization eklenmiş şekilde çalıştırıldı. Ne yazık ki asıl sorun 7^77 ile 7^777 arasındaki devasa boyut farkı.
21:00 bence önerme yanlış 2 ye böldük de neye göre abi böldüysek neden 2P(4) diye almadık orada hata var fakat 2p4 alırsak da toplamları p(8) etmiyor yani doğru olmadığını düşünüyorum direk ondan yapamamışsınız ama hatayı bende anlayamadım
P = A[1 içerenler] + B[1 içermeyenler] şeklinde 2 parçaya ayırdık P(2n) için A(2n) + B(2n) şeklinde yazabildik P(8) = A(8) + B(8) B(8) = P(4) yazdık ama p(4) = 4 , B(8) = 4 bunlar eşitler direkt örnek üstünden göstereyim: P(8) elemanları sırasıyla: 1.eleman :8 2.eleman:4+4 3.eleman :4+2+2 4.eleman:2+2+2+2 5.eleman:2+2+2+1+1 6.eleman :4+2+1+1 7.eleman:4+1+1+1+1 8.eleman:2+2+1+1+1+1 9.eleman:2+1+1+1+1+1+1 10.eleman:1+1+1+1+1+1+1+1 P(4) elemanları sırasıyla: 1.eleman: 4 2.eleman: 2+2 3.eleman: 2+1+1 4.eleman: 1+1+1+1 B(8) elemanları sırasıyla [ B(8), P(8)'deki 1 içermeyenler ]: 1.eleman :8 2.eleman:4+4 3.eleman :4+2+2 4.eleman:2+2+2+2 A(8) elemanları sırasıyla [ A(8), P(8)'deki 1 içerenler ] : 1.eleman:2+2+2+1+1 2.eleman :4+2+1+1 3.eleman:4+1+1+1+1 4.eleman:2+2+1+1+1+1 5.eleman:2+1+1+1+1+1+1 6.eleman:1+1+1+1+1+1+1+1 A(8) = 6, B(8) = 4 P(8)= A(8) + B(8) = 10, P(4) = 4, BUNA GÖRE : B(8) = P(4)=4 O ZAMAN B(2N) = P(N) TABİKİDE 1 ÖRNEK ÜSTÜNDEN GÖSTERDİM FAKAT ASLINDA MANTIĞI ŞU ŞEKİLDE(ANLATABİLDİĞİM KADARIYLA): B fonksiyonu 1 'li toplam terimlerini kabul etmiyor yani en küçük değeri 2 oluyor. P fonksiyonumuz 1 'li toplam terimlerine kadar bölünüyor. B(2n) fonksiyonunun en büyük toplam terimi 2n iken en küçük toplam terimi 2 oluyor. (2 den 2n ' e) aralık P(2n) fonksiyonunun en büyük toplam terimi 2n iken en küçük toplam terimi 1 oluyor.(1 den 2n ' e) aralık P(n) fonksiyonunun en büyuk toplam terimi n iken en küçük toplam terimi 1 oluyor. (1 den n ' e) aralık o zaman bu bilgilere göre : B(2n) fonksiyonunu 2 ye böldüğümüz zaman toplam terimlerinin alabileceği değerleride 2 ye bölmüş olduk yani:: B(2n) fonksiyonunun yeni aralığı : en büyük değeri n , en küçük değeri 1 oluyor. (1 den n ' e) bu aralık P(n) ile aynı: B(2n)/2 fonksiyonunun en büyük toplam terimi 2n iken en küçük toplam terimi 2 oluyor. (1 den n ' e) aralık P(n) fonksiyonunun en büyuk toplam terimi n iken en küçük toplam terimi 1 oluyor. (1 den n ' e) aralık o zaman bunları eşitleyebiliriz. bu arada birşeyi yanlış anlatmış olabilirim 2 ye bölündüğünde B fonksiyonunun verdiği çıktı(y değerleri) değişmiyor sadece verdiğimiz girdiyi (x değerlerini yada n değerleri) değişiyor. yani matematiksel olarak belki yanlış göstermiş olabilirim fakat mantığı bu şekilde b(2n) fonksiyonunun toplam terimlerimi (bu arada elemanlardan bahsediyorum) p(n) fonksiyonundaki toplam terimlerine indirgedik.
P(4) elemanları sırasıyla: 1.eleman: 4 2.eleman: 2+2 3.eleman: 2+1+1 4.eleman: 1+1+1+1 B(8) elemanları sırasıyla [ B(8), P(8)'deki 1 içermeyenler ]: 1.eleman :8 2.eleman:4+4 3.eleman :4+2+2 4.eleman:2+2+2+2 burada net şekilde gözüküyor aslında bu fonksiyonlar eleman sayısını sonuç olarak üretiyor yani ikiside 4 eleman bizim b(8) fonksiyonunun içindeki elemanlarının değerlerini 2 ye böldük aslında bu yüzden sonucu etkilemiyor.
aynı şekilde a(8) 'i P( ) fonksiyonu cinsinden bulmaya çalıştık bunun içinde a(8) deki tüm elemanların değerinden 1 çıkardığımızda p(7) elemanları ile aynı geliyor (bu çıkarma işleminde az önce b dede anlatıığım gibi fonksiyonun ürettiği sonuç değişmiyor biz sadece elemanların değer aralığını değiştirdik a(8) yine 6 çıktısını veriyor
burdaki asıl sıkıntı p fonksiyonunu 2 p fonksiyonu cinsinden yazıp bulmaya çalışmamız fonksiyon sürekli kendisinden 2 tanesini parametre olarak alıyor bu büyük sayılarda aşırı geç cevap aldırır.Videonun başında bahsedildiği gibi 2 saat boyunca cevap alamaması gibi
En son toplam şeklinde verilen formülü C'de yazdım. Şimdi 7^7 = 823543'ü test etmek istedğimde, çıkan sonucu 10^9'a bölüp kalana 7 mi ekleyeceğim? Nasıl yapacağım? Modüler aritmetik çalışmayalı uzun zaaman oldu notasyonu unuttum.
bir seyi merak ediyorum, sizin gibi olabilmek icin inanilmaz bir calisma yeterli mi yoksa kesinlikle belirli bir zeka seviyesinin ustunde de olmaniz sart midir bunu aranizda konustunuz mu hic acikcasi ben muhendislik okuyan ve bu sizlerin ugrastigi sorulara kıyasla 2+2 zorlugunda sayılacak ayt 2024 matematikte bile cok zorlanan biri olarak sizlere inanilmaz saygi duyuyorum ve aklim almiyor ne kadar zaman ne kadar calisma gerektirdi bu seviyelere gelmeniz
Çalışma bir yere kadar. YKS 2024 sınavına kadar zekanın değil çalışmanin ön planda olduğunu zannederdim ama gerçektende belirli bir kapasiten varsa o kapasitenin üzerine çıkamıyorsun
@@EnesAyt0Aslında zeka gelişebilen bir şey. Matematikle, problemlerle bol bol Ugraşmak rasyonel,analitik zekayı büyük oranda geliştirir. Sabırlı azimli olan kazanır bu işte yani
Ben 895. Soruya baktım anacım yok olmuyor çozemiyorum, olmuyor ahhhgh gerçekten Japonlar paralel evrende yaşıyor. Bu arada Bende çözümü Java ile yapmaya çalışıyorum 🥹 Yav olmuyor bı ara 895. Soruyada el atsanız litfennnn
@@ucanihl sorun şu, yedi kümesi tanım kümesi olarak alabilir miyiz? Yani yedi kümesindeki her eleman sekiz kümesindeki sonu 1 ile biten sayılarla eşleşebilir mi yoksa tanım kümesi boş kalabilir mi? Boş kalırsa patlar zaten. Yoksa senin bahsettiğin şey zaten apaçık. (Belki bu da apaçıktır ben anlamıyorumdur:) (7 ve 8 anlayacağın üzere sadece placeholder)
@@forinfo8506 Tanım kümesinin boş kalması demek 7'nin parçalanışlarından birine bi tane daha 1 ekleyemiyoruz veya eklediğimizde 8'in bi parçalanışı çıkmıyor demek. Herhangi bir n sayısının parçalanışına yeni bir tane 1 eklediğimi ve bunu yaptığımda n+1'in bir parçalanışı çıktığını hayal edebiliyorum.
@@ucanihl burda enteresan olan kısım 8 in parçalanışının *yarısının* 7 nin parçalanışının 1 eklenmiş haline eşit olması. Her 7ve8 ikilisi için bunu söyleyebilir miyiz ayrıca?
Hiç hiç birşey bilmiyorum daha liseyi bile bitirmedim sadece merak ettim 7⁷⁷⁷ yi kolaylaştırmak için ⁷⁷⁷ i 2 ye bölerek kaç tane 2 olduğunu bulsak veya işte öyle birşey söz konusu olabilir mi??? Eğer dilinize çok aykırıysa kusura bakmayın birşey bilmiyorum çünkü 😁
Bir süredir farklı alanlarla uğraşmaktan ötürü videolarla ilgilenememiştim. Uzun bir süre sonra ilk defa montaj yapmaktan keyif aldım, özlemişim 🥲 Bu ufak molada hiç boş durmadım, çok şey öğrendim. Bu sürecin ilk meyvelerini Ağustos ayında Leva'da hep birlikte alacağız 😎 çabuk başvurun efenim
Recursive ile olcak iş değil ya. Göremediğimiz bişeyler var. Yada yapacağımız recursive gerçekten kayda değer bir indirgeme yapmalı. Bir bir azaltmak 🤡
C++ binay olarak başlayıp sonda hexadecimal ile bitirip yapmış olabilir başta değeride bir özel ayarlanmış short algoritmasına atar ama mesela aşım gerçekleşirse aşım sayısını list içinde tutar ve short algo bunları bitiştirir neye göre short aslında varsayılan yani biz c++ içerisinde method kullanarak binseydin toplama işlemini 8bit şeklinde tutabiliriz sonra bu short algoritması sayıyı önce binay olarak birlere çevirir yani içine atılan sayıyı binary olarak list içinde bir değerler olarak hafızaya atar sonra bu işlemleri list yani node içinden alır ve vektör içinde while ile işleme sokar ve işlem sonuçlarının hafıza artışı yapılan işlemler ile sayar döngü içine ++i yapabilir büyük ihtimalle bu işlemin bir short algo ile çalışması gerekir tabi method kullanılmalı aynı zamanda kullanılan algoritma aslında internette bulunuyor Japon Wikipedi içinde hex algoritmasını incelemiş kendisine sor kesin yapay zeka mühendisi çıkar
Benim anlamadıgım p(2n-6) yı da sorarak x kadar sorduktan sonra en son nasıl p(0) ı soruyor bılgısayar. Lise matematıgımle soruyorum kusura bakmayın. p(2n-sonsuz) u sorması gerekmıyor mu en son :D
1 ay geçti videodan. Takıntı oldu. Hala ara ara bakıyorum soruya. İçimden bir ses çözümün tek sayıların binary partition'larındaki 1 sayılarının tek sayı da olması üzerinden çözüme giden bir yol olduğunu söylüyor ama keşke bulabilsem. örneğin 7'yi ele alsak partition'larından 1+2+4 yazilimini ele alsak 1'i çıkardığımızda 2+4 kaliyor ve 2+4 'ü 2*(1+2) şeklinde yazılabiliyor. Bir şekilde bu durumda 7'yi 3'ün partition'ı cinsinden yazabiliyor oluyoruz. Net bir şey söylemiyorum ama buradan çözüme giden bir algoritma logn'ler ifade edilebilecek bir yöntem olacağını seziyorum ama keşke bulsam. Neyse bir çözüm bulursanız gözünüzü seveyim paylaşın.
ben de sizle aynı durumdayım, 1 aydır takıntı haline getirdim ve onlarca saatimi harcadım. düşüncem ise video sonunda anlatılan küme sisteminden yola çıkmalıyız gibi. bu konu hakkında konuşmak isterseniz iletişime geçebiliriz.
bizim taichi salonunda da oyle, her seans basinda sonunda hep bir agizdan mutlu yillar dilenir, guzeldir, hayatin kendisini her gun kutladigini hissettirir
PE'de bir milyon üyeden dünyada ilk 100'deyim. Bu videoyu yaptığınıza sevindim. Devamı, gelişim adına gelmelidir. "Tam anlamı ile matematik sayılmaz" ifadeniz pek doğru değil. PE ileri matematik bilgisi & programlama yeteneği olanların (_ikisi birden ileri_) çözebileceği sorulardır. Burada ilk %25'te olanlar yüksek seviyeli işlerde yer alan insanlar. Süre konusu, standart bir matematikçinin günlerce uğraşsa da çözemeyeceği bu zorluktaki sorular için şaşırtıcı olabilir. Arşive bakarsanız 5 dakikada çözen de var. Bu soruların en zorlarının bir tık sonrası milenyum problemleridir. O yüzden hayal kırıklığına uğramayın. Ancak sizler ve izleyicileriniz ile TR üniversitelerinde profesöre kadar olan seviyedekiler ilk 50 problemi çözebilmelidir. Tüm problemler için bilgisayar programı 1 dk'dan az sürede sonucu bulamıyorsa matematiksel yönteminiz yetersiz ya da yanlıştır. Soruları çözebilenlerin girebildiği thread forumlara baktığınızda tüm problemler maksimum 15 saniyede çözülmüştür.
Hocam anladigim kadariyla sizin bu alanda uzmanliginiz var . Ilk 100 de olabilmek için hayatimizin komple matematik olmasi mi gerekiyor yoksa sizin hayatiniz nasil ?
Milenyum problemleri kısmında abartmışsın. Matematik açısından o seviyyede sorular yok. Zira milenyum soruları ağır topoloji, gruplar teorisi ve b. gibi konularda. Project Euler'de sayılar teorisi ve geometri üstünlükte. Ve bir diğer fark, PE soruları saatler hatta dakikalar içinde çözüle bilirken milenyum soruları asırlardır çözülemiyor.
@@TofigFarajli ufak değişiklikler büyük farklar yaratır. İlk sorularda çözüm oranı %90lardayken son sorularda birkaç kişiye kadar düşüyor. Soruların çözümünde bahsettiğin matematik dalları çözüm bölgesini sınırlamada zaten kullanılıyor.
Cok buyuk sayilar ve mod operatoru gorunce aklima hep jenerator fonksiyonlar geliyor. Bununla alakali 3Blue1Brown da bir anlatim mevcut. ua-cam.com/video/bOXCLR3Wric/v-deo.html
Tüm derincesi ailesinin Kurban Bayramı'nı kutlarız 🥳
Bu yaz siz de bizim öğrencimiz olabilirsiniz!
Leva Matematik Kampı'na başvurun: levamatematik.com
Bayramın mübarek olsun abi mutlu yıllar
aklımda mükemmel bir çözüm var ama bir sayının psini hesaplamanın kısa bir yolu var mı
Başlıktan Project Euler yazısını kaldırın videoyu bulamasınlar
pRJ euler'de soruyu çözme süresi olayı şöyle yalnız, soru yayınlanır yayınlanmaz süre işliyor, takip etmeniz yakalamanız ve hemen çözmeye başlamanız lazım, soru yayınlandıktan 5 saat sonra soruyu görüp 30 dk da çözersen 5.5 saatte çözmüş görünürsün. o listede soruyu daha hızlı çözmüş olanlar olabilir ama geç girdiyse cevabı belli olmaz bu durum. Ama Prj euler sayfasında sonraki sorunun ne zaman yayınlanacağını da söylüyor. O konuda bir adaletsizlik yok.
2:02 derincesi kameranin onunde telefonu eline alip p'ye basiyor bu cesaretin yuzde 2si bende olsa coktan unlu olmustum
bizde gizli saklı yok 😎
Ahahahahah
@@derincesi Abi gizli sekmeden giriyon biliyorum ben
benim çok matematik bilgim yok ama bölme hakkında söyle bir şey biliyorum: bir sayının kalanının o sayının bir katıyla çarpıp yine aynı sayıya bölürsek katı olan sayının o sayıyla bölümüne tekabül ediyor
Örnek:
81mod 11 = 4 5 katı olsun mesale 4.5=20 20/11=9 burdan gördüğmüz gibi 5 katının moduyla kalanların modu arasında bağlantı var
sağlaması 405-11=9
7 üssü 77 sonucundan yola çıkarak belli bir örüntüyle toplamla belki tekrar ile cevap gelebilir
9:35 C'nin gmp modülünü kullanabilirsiniz, cihazın hafızasının yeteceği herhangi bir sayı değeri ile işlem yapmanızı sağlıyor ve aşırı hızlı.
Ancak buradaki problem sadece arbitrary precision matematik değil, stack overflow ana problem. Ama güzel tavsiye.
DÜZELTME: Algoritmanın ensonki halini C'de arbitrary precision kullanmadan implement etmek mümkün değil. Çünkü günümüz 64-bit bilgisayarlarında hiçbir native data type bu kadar büyük bir sayıyı deskteklemiyor. Eğer o Japon arakdaşlar bir APM kütüphanesi kullanmadan çözdüler ise muhtemelen problemi daha basit bir forma indirgemiş olmalılar.
@@semihartan Cevabı mod (10^9 + 7) tabanında istediği için Unsigned 32 bit int'e sığar hocam :) arbitrary precision'a bu yüzden gerek yok, düşünmüşler o kısmı soruyu yazarken
@@ozansan2217 Ben aslında 7^777'yi argüman olarak verirken doğacak soruna istinaden öyle düşünmüştüm.
@@semihartan veriyi malloc() ile heapde tutarsan ram'in boyutu kadar alan kullanabilirsin. stackowerflow'a neden olmaz
@@samipasazadeseza1 Rekürsif yazarsan stackoverflow'a neden oluyor. Sen heralde linear yaklaşımdan bahsediyorsun.
Hekrese iyi bayramlar derincesi ailesi❤🎉
O üstten kurtarmadan o iş olmaz gibi :P
1. Düz bir loop ile (buna Dynamic Programming ile bakarsak da böyle bir şey çıkar) P(0),P(1),P(2) diye sayarak gidemeyeceğimiz kadar uzak bir sayı
2. Yukardan bölerek (2n) -> (n) , (2n-1) tipi gitsek de ağaç hemen açılacağı için çok büyüyor hemen, yukardaki ile benzer sebeplerden
bir şekilde o 777'yi ya azaltmak lazım, ya da modulo'nun avantajını kullanmak gerek (32-bit unsigned int'e sığıyor o modulo değeri, arbitrary precision ya da BigInt benzeri bir şeye aslında gerek yok sorun sadece memory'mizin veya loop süremizin yetmemesi)
Herkese iyi bayramlar emeğinize sağlık.. Bu tip programlamaya yönelik çözüm deyince 8 sene google code jam birincisi c++ uzmanı beyaz rus Gennady Korotkevitch aklıma geliyor...
Kazık soruymuş. İşten güçten alıkoydu hala çözemedim.
P(2n) = P(2n-2) + P(n) eşitliğini kullanarak
P(2n) = P(0) +P(1) + … + P(n) eşitliğini elde edebiliyorsun.
Buradan giderek teorik olarak P(2n)’i P(0)‘dan P(n/2)’ye kadar olan partition’ların cinsinden ifade etmek mümkün. Tabii bu durumda oluşan yeni eşitlikte P(0)’dan P(n/2) ya da olan elemanların katsayıları 1’den farklı değerler almaya başlayacak.
İfademizi P(n/4)‘e kadar olan partition’ların toplamı cinsinden yazdığımızda da P(0)’dan P(n/4) ‘e kadar olan elemanların katsayıları büyüyecek.
Bu şekilde P(2n) ifadesini P(0) cinsinden formüle etmek teoride mümkün ama işlemi yaparken artık beynim yandı.
Böyle sayıları yarılaya yarılaya logaritmik bir şekilde çözüme ulaşacağım izlenimini verdi ama çözemedim açıkçası.
Örneğin P(24) 'fadesini ele alırsak;
Aşama aşama P(24)'ü P(0) cinsinden şöyle yazabiliyoruz.
P(24) = P(0) + P(1) + P(2) + P(3) + P(4) + P(5) + P(6) + P(7) + P(8) + P(9) + P(10) + P(11) + P(12)
P(0) = P(0)
P(1) = P(0)
P(2) = P(0) + P(1)
P(3) = P(0) + P(1)
P(4) = P(0) + P(1) + P(2)
P(5) = P(0) + P(1) + P(2)
P(6) = P(0) + P(1) + P(2) + P(3)
P(7) = P(0) + P(1) + P(2) + P(3)
P(8) = P(0) + P(1) + P(2) + P(3) + P(4)
P(9) = P(0) + P(1) + P(2) + P(3) + P(4)
P(10) = P(0) + P(1) + P(2) + P(3) + P(4) + P(5)
P(11) = P(0) + P(1) + P(2) + P(3) + P(4) + P(5)
P(12) = P(0) + P(1) + P(2) + P(3) + P(4) + P(5) + P(6)
================================================
P(24) = 13*P(0) + 11*P(1) + 9*P(2) + 7*P(3) + 5*P(4) + 3*P(5) + 1*P(6)
13*P(0) = 13*P(0)
11*P(1) = 11*P(0)
9*P(2) = 9*P(0) + 9*P(1)
7*P(3) = 7*P(0) + 7*P(1)
5*P(4) = 5*P(0) + 5*P(1) + 5*P(2)
3*P(5) = 3*P(0) + 3*P(1) + 3*P(2)
1*P(6) = 1*P(0) + 1*P(1) + 1*P(2) + 1*P(3)
===========================================
P(24) = (13+11+9+7+5+3+1)*P(0) + (9+7+5+3+1)*P(1) + (5+3+1)*P(2) + (1)*P(3)
P(24) = 49*P(0) + 25*P(1) + 9*P(2) + P(3)
(13+11+9+7+5+3+1)*P(0) = (13+11+9+7+5+3+1)*P(0)
(9+7+5+3+1)*P(1) = (9+7+5+3+1)*P(0)
(5+3+1)*P(2) = (5+3+1)*P(0) + (5+3+1)*P(1)
(1)*P(3) = (1)*P(0) + (1)*P(1)
======================
P(24) = [(13+11+9+7+5+3+1) + (9+7+5+3+1) + (5+3+1) + (1)]*P(0) + [(5+3+1)*P(1) + (1)] * P(1)
[(13+11+9+7+5+3+1) + (9+7+5+3+1) + (5+3+1) + (1)]*P(0) = [(13+11+9+7+5+3+1) + (9+7+5+3+1) + (5+3+1) + (1)]*P(0)
[(5+3+1)*P(1) + (1)]*P(1) = [(5+3+1)*P(1) + (1)]*P(0)
=========================================================
P(24) = { [(13+11+9+7+5+3+1) + (9+7+5+3+1) + (5+3+1) + (1)] + [(5+3+1)*P(1) + (1)] } * P(0)
Dolayısıyla parantez içerisindeki toplamlara bir 24'e N dersek N cinsinden bir formül bulabilirsek, bu formülde N yerine 7^777 koyup mod'unu bilgisayarda kolayca hesaplayabiliriz. Lakin yukarıdaki örnekte { [(13+11+9+7+5+3+1) + (9+7+5+3+1) + (5+3+1) + (1)] + [(5+3+1) + (1)] } katsayısına 24 cinsinden genel bir formül bulamadım.
Çok merak ettim çözüm ulaştıysa bir şekilde paylaşabilir misiniz ?
😅😅
Okumaya üşendim emeğine sağlık
Ben yeni bir programlama dili öğrenmek 1'den başlayarak tekrar tekrar çözüyorum. Gerçekten o dili öğrenmeye yardımcı oluyor. C++ bu dillerden değil ama c++ kodu yazmama da etkisi oldu diyebilirim. Nasıl efektif kod yazılır çok yardımcı olan problemler oluyor.
890. soru daha önce yayınlanmış bazı problemlere benziyor, muhtemelen oradan gelen bilgi sayesinde o kadar hızlı çözebiliyorlar. Acaba yapay zekadan da yardım alıyorlar mı diye de şüphe etmiyor değilim.
Ayrıca bulutta çok güçlü hesaplama yapma olanaklarına da ulaşmak mümkün. Belki öyle bir yardım da almış olabilirler.
Geometrik optimalleştirme ile ilgili bir anlatım yapın lütfen.
Sizin de babalar gününüz kutlu olsun matematiğin babaları
Bir Calculus anlatığınız bir seri yapsanınza anlayalım
Aşırı yüksek powerlar aslında mod alınabildiği zaman Python ile çözülebiliyor, Euclid algoritmasının varyasyonlarıyla. Zamanında dersini almıştım da kütüphaneyi şimdi bulamadım. Şu soruyu çözüp tekrar yazacağım, kütüphaneyi bulduktan sonra.
Bro dersi nerden aldın
Bir süredir kendimi sağlam bir matematik ve fizik öğretmeye başladım, Proj. Euler'i görmem hoşuma gitti, bir yazılım mimarı olarak matematik bilgimi daha da arttırmam gerek, acaba P.E projesi matematği geliştirme de ne akdar yardım eder. Neredeyse per-intermatiate bir matematik bilgisi için söylüyorum bunu yalnız.
Sayılar teorisinin temellerini öğrenme konusunda kesinlikle çok işinize yarayacaktır fakat bazı sorular çok üst düzeyde kalabilir. Belli bir kitabı ya da ders programını takip ederseniz destekçi olarak kullanabilirsiniz.
@@derincesi Teşekkürler, şu an bir video serisi üzerinden çalışıyorum yabancı bir kanal, Michel van biezen tavsiye ederim. 10K video var içeride bakın derim. Sayılar teorisini not aldım. müsait bir zaman da gereki kitapları inceleyip, okuyup, kafa yorup devam edeceğim lakin önce halletmem gereken bazı konular var tabi ki.
Selamlar, videolarınızı çok beğeniyorum. Siz problem çözünce ben de çözmüş kadar oluyor ve kendimi zeki hissediyorum.
merhabalar, yazdığınız formüle göre bana p(16) ya da p(512), p(1024) gibi değerlerin sonuçlarını atabilir misiniz, formülünüzü koda dökmeyi denedim ama p(8) e kadar doğru cevap vermesine rağmen p(16) da farklı değerler vermeye başladı, sanırım ben yanlış kodlamış olabilirim, eğer siz koda döktüyseniz ne yazdığınızı gösterebilir misiniz?
@@EmreAkdeniz42 kapat kapat yanlış saymışım sorry asdasdasd
Mzmxnxnnxnxnzd umarım çözüme ulaşabiliriz
@@EmreAkdeniz42 ya parmak hesabı bir farkla kaçırmışım dsfksdf pattern bulmaya çalışıyorum. ama sanki exponential bir bağıntı bulunması gerekiyor gibi. yoksa lineer olarak ulaşılamıcak.
@@matematikzekas5152 evet lineer ilişki bu şekilde, ancak 7^777 gibi büyük bir sayıya bu ilişki ile ulaşmak makineyi kanırtıyor. işi kısaltacak başka bir örüntü bulmak gerekiyor.
hocam sayi cok buyuk. toplayarak ulasamayiz. bir seyleri carpmamiz lazim. demedi demeyin.
Videoyu attığınızdan beri sırayla soruları çözüyorum, 76. sorudayım şuan ve bu soruya sanki benziyor
Belirtmek istiyorum ikinin katlarına şu şekilde ulaşılabilir 1 sıralanır ise artırılabilir hızlanma yapılabilir yani ikinin katları yazılırken sıralanmayacak ise sola düşerken ikinin katları olarak düşebilir yani sola doğru bir rakamları 2elde edilene kadar dolup sonrada baştakiler en sola eşit olarak yayılarak yapılabilir ama 3 tane node ihtiyaç var tabi ki
merak edenler için 7^777=437700548734202700764895770266348348092832914249674791140665053626929347534202351106020194155443513839456325721913630105201068498522094093221194452990640962260851974156879592063227479801027937390173618458318292060462312561904872921404996347914903220371579120904290547306774449767219823345201862426316157793360495888933222475962390346573965120335848047904096834577873930030196154468742640594192857019928005691001294411855008790451493917938269917967228129913242997115959934794588199409510967575780170388844996513211079070059269245208385656837790466645171164678909615879630570320541997297378507539586919388988019437117684585097884685751563283203545236625979207 eşittir.
ikinci gereksiz bilgi; 657 basamaklı bir sayı.
Beklediğimden küçükmüş
İç içe geçmiş toplamlardan oluşan formüle bakarsak P(n) < 2*4*8*16*...n/2 gibi bi upper bound söyleyebiliyoruz sanırım. Bu da n^logn gibi bişe yapıyor. Bu aynı zamanda bu döngüyü hesaplayan naive algoritmanın time complexity'sine bi üst limit (muhtemelen gerçek complexity'e yakın bi limit). Quasi-polynomial time bi algoritma olması kuvvetle muhtemel yani.
Mutlu yillar kaptan
Tahminimce 7 nin katlari icin S’e bagli baska bir baglanti vardir. O baglanti bulundugunda sadece 777 defa donmesi gereken bir donguye ihtiyaciniz olacaktir. Ayrica ozyineleme yerine dinamik programlama yaklasimlarina bakin yoksa ozyineleme vs ile bu sorunun cozumu icin cok fantastik bir baginti bulunmasi gerekicektir.
C.S. eşitsizliği ile ilgili video gelsin lütfen.
Anlatımdan sezdiğim kadarıyla p(n) ile 2nin kuvvetleri arasında bir bağ oluşturmak mümkün. Küçük bi araşdırma yaptım ve buna ait makale ve yazılar buldum. 7^777 ni 7nin 2 esastan loqarifmini 777 ile çarparak 2 nin kuvveti gibi yaza ve sonucu p(2^k) şeklinde araya bilirsiniz. Bu hesablamanı hızlı yapa bilir. Lakin japonların hangi bilgisayarı kullandığına emin değiliz))
özlediniz🙏🏻🎉
Benim bu kanala emek vermiş ve kanalın sahibi veya sahiplerine bir sorum var matematikçi olmak için matematikle derin bir duygusal bağ beslemek gerekiyor arkadaşlara sorum şu bu bağ nasıl oluştu ?
İsterseniz bununla ilgili bir içerikte çekebilirsiniz böylece matematiği sevmeyen veya sevmeye çalışan insanlara da yardımcı olmuş olursunuz
Not: Bu soruyu sormamdaki sebep şu kanalınızı izlediğimde matematiği seviyorum ve beni büyülüyor içine çekiyor fakat gidip ösym problem sorularını çözmem gerektiği için onları öğrenmeye çalıştığımda matematiğin tüm büyüsü ve sevgisi kaçıyor öğrenmemi zorlaştırıyor bu durum.
Nedense kaliteli insanların takipçisi az oluyor ❤
İçerik için teşekkürler.
Özyinelenen (recursive) fonksiyonlar bu tür problemlerde çözüm olmaz. Çünkü 7 üzeri 777 için belki yeterli hafıza alanına sahip bir bilgisayar olabilir ama 10 üzeri 80 için evrendeki atomların sayısı yeterli gelir mi diye bir düşünmeli.
Çözüme giden yolun ilgi çekici, fikrimce öz yinelemeli fonksiyonları kullanırken her işlemin sonucunu hafızada tutmak yerine her işlem için bulunan sonucu bir değişkende toplaman olabilir. Tabi bu toplam değer yine çok büyük bir sayı olabilir, büyük sayıların ifade biçimini de sana bırakıyorum. Logaritmik fonksiyonlar işlem süresini azaltıyor, bunu fark etmiş olman çok güzel.
Sonradan aklıma geldi; p(7^7) mod 10^9+7 ile sonuç eşleşmesi yapıp, p(7^777) mod 10^9+7 değerini istiyorlar. İşte büyük sayının ifade ediliş biçimi. Algoritmada mod kullanımı hafızada yer artırmaya değil azaltmaya yönelik bir işlem. İyi bir tüyo.
Bu problem ile kayıpsız sıkıştırılamayan verilerin kayıpsız sıkıştırılması hedeflenmiş gibi duruyor.
Bunu başarabilenler muhtemelen büyük işler başarmış olmalılar.
Denediniz mi bilmiyorum ancak gmp kullanan bir Iterative DP C++ implementasyonu ile rahatca cozebilirsiniz diye dusunuyorum. Recursive olarak bulmak icin de birden fazla program iteration'ı kullanabilirsiniz. Yani belli bir sayiya kadar hesaplar, onun sonucu ile yeni bir program baslatabilirsiniz. Bunlar disinda elin japonu muhtemelen DP'de table filling dedigimiz isi parallel bir sekilde yaptirdi ondan bu kadar hizli bir sekilde sonuca ulasti :)
O(n log n) oluyor DP yaparsan çok yavaş. Ayrıca ellerinde süper bilgisayar yoksa paralel çalıştırmak da hiçbir işe yaramaz. Sayı çok büyük öyle DP ile çözülmez, alan yetmez zaten.
GMP'ye gerek yok modulo değeri uint32ye sığıyor da DP bi kere kesin patlar hocam 7^777 dediğiniz sayı gözlemlenebilir evrendeki atomların sayısından yaklaşık 10^600 kat daha fazla.. O üstü bir şekilde azaltmadan çözülmez gibime geliyor
@@tibetatakan Sorunun DP ile çözülemeyeceği doğru fakat DP O(nlogn) değil. f(2n) = f(n) + f(n-1) ... f(0) olduğu için, DP2 DP1'in (f(n)'i veren DP) prefix sum'ını tutacak şekilde başka bir DP yarattıktan sonra soruyu O(n)'de çözebiliriz.
@@xorgate667 Bir entry’i hesaplamak için O(1) vermişsin ve bu doğru değil. Düz prefix sum ile yapamazsın ki modifiye etmen lazım. Bulunduğun pozisyona n desek, n’e kadar olan bütün 2’nin kuvvetlerini bulup şunu toplaman lazım: DP[n - i] (burada i ikinin kuvveti ve her i için toplaman lazım) Sonuç DP[n]’in çözümü.Bu da her bir entry için O(log n) demek. Analizini yapmama gerek yok herhalde gayet akla yatıyor.
11:14 elin japonunu geç birisi kağıt kalemle bulmuş :D
Mutlu yıllar ve iyi bayramlar ama bir soru soracağım siz abc matematiğin 11.sinif 4.sorusunu çözecektiniz ben kaçırdım mı?
yakında
P(n) kısmı basit aşağıdaki gibi yaptım ama üssü nasıl azaltıcam veya nasıl bir algoritma kurucam ki stack overflow hatası almayayım. P(10000) e kadar 2 3 dakikada basıyor.
public class BinaryPartitions {
public static int partitionCount(int number) {
if(number==0 || number==1) {
return 1 ;
}
if(number%2==0) {
return partitionCount(number-1) + partitionCount(number / 2);
}else {
int prev=getPreviousEvenNum(number);
return partitionCount(prev);
}
}
public static int getPreviousEvenNum(int number) {
if(number%2==1) {
return number - 1;
}
return number;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int upperLimit=1000;
for(int i=0;i
hepsini önceten hesaplatıp direkt koymuş olabilirler mi?
Dostum evimde yeşil tahta var duvar boyu fakat tebeşirim çok fazla tahtamı beyazlatıyor bir önerin vs var mı ? Senin tahtan gibi nasıl yapabilirim ? :D
Recursive fonksiyon kullanamıyorsanız iki adet array kullanın.
37:00 big O’yu anladığımız saatlerdeyiz 😔
complexity theorye girse iyiymiş cidden
Abi odtüye geliyorum bi kahve içek
japonsun bir kere. Akıllı adamsın
xd
Exponentiation by Squaring yapsak oradan gelir mi
hocam eğer p(7^77)'nin sonucunu bikaç msde verip de p(7^777)'nin sonucunu 2 saat boyunca hesaplayamayan kodu python gibi daha üst seviyeli bir dille yazdıysa aynı kodu c veya c++ ta yazmayı dene sonuç alabilirsin, python hız açısından bu dillere göre dezavantajlı bayağı.
veya yazdığımn koda dynamic programmin yöntemi olan memoization eklemeyi dene yapmadıysan, kodun daha çabuk sonuç verir.
@@abdulkadiryilmaz9123 Program Maple dilinde memoization eklenmiş şekilde çalıştırıldı. Ne yazık ki asıl sorun 7^77 ile 7^777 arasındaki devasa boyut farkı.
@@derincesizaten özel bir dil kullanmak zorunlu olmamalı. Diğer türlü faq kısmında yazarlardı diye düşünüyorum
Dayı diğer pE sorularını kılçıksız çözebildiniz mi siz?
21:00 bence önerme yanlış 2 ye böldük de neye göre abi böldüysek neden 2P(4) diye almadık orada hata var fakat 2p4 alırsak da toplamları p(8) etmiyor yani doğru olmadığını düşünüyorum direk ondan yapamamışsınız ama hatayı bende anlayamadım
hata yok, formül doğru, vektörlerin her bileşenini ikiye bölüyoruz 😊
P = A[1 içerenler] + B[1 içermeyenler] şeklinde 2 parçaya ayırdık
P(2n) için A(2n) + B(2n) şeklinde yazabildik
P(8) = A(8) + B(8)
B(8) = P(4) yazdık ama p(4) = 4 , B(8) = 4 bunlar eşitler direkt örnek üstünden göstereyim:
P(8) elemanları sırasıyla:
1.eleman :8
2.eleman:4+4
3.eleman :4+2+2
4.eleman:2+2+2+2
5.eleman:2+2+2+1+1
6.eleman :4+2+1+1
7.eleman:4+1+1+1+1
8.eleman:2+2+1+1+1+1
9.eleman:2+1+1+1+1+1+1
10.eleman:1+1+1+1+1+1+1+1
P(4) elemanları sırasıyla:
1.eleman: 4
2.eleman: 2+2
3.eleman: 2+1+1
4.eleman: 1+1+1+1
B(8) elemanları sırasıyla [ B(8), P(8)'deki 1 içermeyenler ]:
1.eleman :8
2.eleman:4+4
3.eleman :4+2+2
4.eleman:2+2+2+2
A(8) elemanları sırasıyla [ A(8), P(8)'deki 1 içerenler ] :
1.eleman:2+2+2+1+1
2.eleman :4+2+1+1
3.eleman:4+1+1+1+1
4.eleman:2+2+1+1+1+1
5.eleman:2+1+1+1+1+1+1
6.eleman:1+1+1+1+1+1+1+1
A(8) = 6,
B(8) = 4
P(8)= A(8) + B(8) = 10,
P(4) = 4,
BUNA GÖRE :
B(8) = P(4)=4
O ZAMAN B(2N) = P(N)
TABİKİDE 1 ÖRNEK ÜSTÜNDEN GÖSTERDİM FAKAT ASLINDA MANTIĞI ŞU ŞEKİLDE(ANLATABİLDİĞİM KADARIYLA):
B fonksiyonu 1 'li toplam terimlerini kabul etmiyor yani en küçük değeri 2 oluyor.
P fonksiyonumuz 1 'li toplam terimlerine kadar bölünüyor.
B(2n) fonksiyonunun en büyük toplam terimi 2n iken en küçük toplam terimi 2 oluyor. (2 den 2n ' e) aralık
P(2n) fonksiyonunun en büyük toplam terimi 2n iken en küçük toplam terimi 1 oluyor.(1 den 2n ' e) aralık
P(n) fonksiyonunun en büyuk toplam terimi n iken en küçük toplam terimi 1 oluyor. (1 den n ' e) aralık
o zaman bu bilgilere göre :
B(2n) fonksiyonunu 2 ye böldüğümüz zaman toplam terimlerinin alabileceği değerleride 2 ye bölmüş olduk yani::
B(2n) fonksiyonunun yeni aralığı : en büyük değeri n , en küçük değeri 1 oluyor. (1 den n ' e) bu aralık P(n) ile aynı:
B(2n)/2 fonksiyonunun en büyük toplam terimi 2n iken en küçük toplam terimi 2 oluyor. (1 den n ' e) aralık
P(n) fonksiyonunun en büyuk toplam terimi n iken en küçük toplam terimi 1 oluyor. (1 den n ' e) aralık
o zaman bunları eşitleyebiliriz.
bu arada birşeyi yanlış anlatmış olabilirim 2 ye bölündüğünde B fonksiyonunun verdiği çıktı(y değerleri) değişmiyor sadece verdiğimiz girdiyi (x değerlerini yada n değerleri) değişiyor.
yani matematiksel olarak belki yanlış göstermiş olabilirim fakat mantığı bu şekilde b(2n) fonksiyonunun toplam terimlerimi (bu arada elemanlardan bahsediyorum) p(n) fonksiyonundaki toplam terimlerine indirgedik.
P(4) elemanları sırasıyla:
1.eleman: 4
2.eleman: 2+2
3.eleman: 2+1+1
4.eleman: 1+1+1+1
B(8) elemanları sırasıyla [ B(8), P(8)'deki 1 içermeyenler ]:
1.eleman :8
2.eleman:4+4
3.eleman :4+2+2
4.eleman:2+2+2+2
burada net şekilde gözüküyor aslında bu fonksiyonlar eleman sayısını sonuç olarak üretiyor yani ikiside 4 eleman
bizim b(8) fonksiyonunun içindeki elemanlarının değerlerini 2 ye böldük aslında bu yüzden sonucu etkilemiyor.
aynı şekilde a(8) 'i P( ) fonksiyonu cinsinden bulmaya çalıştık bunun içinde a(8) deki tüm elemanların değerinden 1 çıkardığımızda p(7) elemanları ile aynı geliyor (bu çıkarma işleminde az önce b dede anlatıığım gibi fonksiyonun ürettiği sonuç değişmiyor biz sadece elemanların değer aralığını değiştirdik a(8) yine 6 çıktısını veriyor
burdaki asıl sıkıntı p fonksiyonunu 2 p fonksiyonu cinsinden yazıp bulmaya çalışmamız fonksiyon sürekli kendisinden 2 tanesini parametre olarak alıyor bu büyük sayılarda aşırı geç cevap aldırır.Videonun başında bahsedildiği gibi 2 saat boyunca cevap alamaması gibi
22:30 nasıl demesine patladım ya, diğer arkadaşta anlamamak için çok ısrarcı asdfsdfsfas
Hocam Python öğrenmek için kaynak önerebilirmisiniz ( not bu yıl fizik okumaya başlayacağım)
p7^7 vermiş aslında.. öz yenilemenin en alt basamağı olarak bunu kullansanız olmuyor mu?
yetmiyor.. 7^7 hesaplayınca 823543 ediyor, mevzubahis sayı 7^777 yani (823543)^111, arada dünyalar yıldızlar kadar uzaklık var
"eski sevgili gibidir tebeşir"
abi kral adamsın da 6 ay oldube artık mutlu yıllar demesenmi seneye iki kere mutlu yıllar demen gerekebilir çünkü
Orhan babanın Batsın bu dünyasını dinledim, buraya geldim.
En son toplam şeklinde verilen formülü C'de yazdım. Şimdi 7^7 = 823543'ü test etmek istedğimde, çıkan sonucu 10^9'a bölüp kalana 7 mi ekleyeceğim? Nasıl yapacağım? Modüler aritmetik çalışmayalı uzun zaaman oldu notasyonu unuttum.
Bulduğun sayının (10^9 +7) ile bölümünden kalanı bulacaksın
bir seyi merak ediyorum, sizin gibi olabilmek icin inanilmaz bir calisma yeterli mi yoksa kesinlikle belirli bir zeka seviyesinin ustunde de olmaniz sart midir bunu aranizda konustunuz mu hic acikcasi ben muhendislik okuyan ve bu sizlerin ugrastigi sorulara kıyasla 2+2 zorlugunda sayılacak ayt 2024 matematikte bile cok zorlanan biri olarak sizlere inanilmaz saygi duyuyorum ve aklim almiyor ne kadar zaman ne kadar calisma gerektirdi bu seviyelere gelmeniz
Çalışma bir yere kadar. YKS 2024 sınavına kadar zekanın değil çalışmanin ön planda olduğunu zannederdim ama gerçektende belirli bir kapasiten varsa o kapasitenin üzerine çıkamıyorsun
@@EnesAyt0Aslında zeka gelişebilen bir şey. Matematikle, problemlerle bol bol Ugraşmak rasyonel,analitik zekayı büyük oranda geliştirir. Sabırlı azimli olan kazanır bu işte yani
Ben 895. Soruya baktım anacım yok olmuyor çozemiyorum, olmuyor ahhhgh gerçekten Japonlar paralel evrende yaşıyor.
Bu arada Bende çözümü Java ile yapmaya çalışıyorum 🥹
Yav olmuyor bı ara 895. Soruyada el atsanız litfennnn
Sonu 1 ile biten sekizlerle yedileri nasıl bijective bir eşleme yapabiliyoruz ki? Yani örten olduğunu nasıl direk diyebildik?
A ve B iki küme olsun. A'dan B'ye birebir bi fonksiyon bulabilirsen |A|
@@ucanihl sorun şu, yedi kümesi tanım kümesi olarak alabilir miyiz? Yani yedi kümesindeki her eleman sekiz kümesindeki sonu 1 ile biten sayılarla eşleşebilir mi yoksa tanım kümesi boş kalabilir mi? Boş kalırsa patlar zaten. Yoksa senin bahsettiğin şey zaten apaçık. (Belki bu da apaçıktır ben anlamıyorumdur:) (7 ve 8 anlayacağın üzere sadece placeholder)
@@forinfo8506 Tanım kümesinin boş kalması demek 7'nin parçalanışlarından birine bi tane daha 1 ekleyemiyoruz veya eklediğimizde 8'in bi parçalanışı çıkmıyor demek. Herhangi bir n sayısının parçalanışına yeni bir tane 1 eklediğimi ve bunu yaptığımda n+1'in bir parçalanışı çıktığını hayal edebiliyorum.
@@ucanihl burda enteresan olan kısım 8 in parçalanışının *yarısının* 7 nin parçalanışının 1 eklenmiş haline eşit olması. Her 7ve8 ikilisi için bunu söyleyebilir miyiz ayrıca?
dinamik programlama sayesinde daha hızlı bulabilirsin.
Hiç hiç birşey bilmiyorum daha liseyi bile bitirmedim sadece merak ettim 7⁷⁷⁷ yi kolaylaştırmak için ⁷⁷⁷ i 2 ye bölerek kaç tane 2 olduğunu bulsak veya işte öyle birşey söz konusu olabilir mi??? Eğer dilinize çok aykırıysa kusura bakmayın birşey bilmiyorum çünkü 😁
Bir süredir farklı alanlarla uğraşmaktan ötürü videolarla ilgilenememiştim. Uzun bir süre sonra ilk defa montaj yapmaktan keyif aldım, özlemişim 🥲
Bu ufak molada hiç boş durmadım, çok şey öğrendim. Bu sürecin ilk meyvelerini Ağustos ayında Leva'da hep birlikte alacağız 😎 çabuk başvurun efenim
hocam bu mod ne her videoda var bi açıklar mısınız
basitçe açıklamak gerekirse bir sayının mod içinde belirtilen sayıya bölümünden kalan sayı. Mesela 50'nin mod 5'i = 0 fakat 50'nin mod 7'si = 1
44:30 thats a good place to stop mentioned
!!!
Çok faydalı bir video olmuş devamını bekliyorum 🎉
Bu japonlar , singapurlular manyak resmen
11:00 some piton problems
Recursive ile olcak iş değil ya. Göremediğimiz bişeyler var. Yada yapacağımız recursive gerçekten kayda değer bir indirgeme yapmalı. Bir bir azaltmak 🤡
Mat ogrencisi misin?
@@YeminEderim-ui4nu bu yıl inşallah öyle olcak
@@forinfo8506 aaa sinav nasil gecti ve hangi uniyi istiyorsun
@@YeminEderim-ui4nu fena değildi. Bakıcaz üniyi
@@forinfo8506 koç bilkent ya da odtü müü, ben de temel bilim istiyorum da
C++ binay olarak başlayıp sonda hexadecimal ile bitirip yapmış olabilir başta değeride bir özel ayarlanmış short algoritmasına atar ama mesela aşım gerçekleşirse aşım sayısını list içinde tutar ve short algo bunları bitiştirir neye göre short aslında varsayılan yani biz c++ içerisinde method kullanarak binseydin toplama işlemini 8bit şeklinde tutabiliriz sonra bu short algoritması sayıyı önce binay olarak birlere çevirir yani içine atılan sayıyı binary olarak list içinde bir değerler olarak hafızaya atar sonra bu işlemleri list yani node içinden alır ve vektör içinde while ile işleme sokar ve işlem sonuçlarının hafıza artışı yapılan işlemler ile sayar döngü içine ++i yapabilir büyük ihtimalle bu işlemin bir short algo ile çalışması gerekir tabi method kullanılmalı aynı zamanda kullanılan algoritma aslında internette bulunuyor Japon Wikipedi içinde hex algoritmasını incelemiş kendisine sor kesin yapay zeka mühendisi çıkar
Pythondaki dictionary, javadaki hashmap ile cok basit bir soru
Çöz o zaman patates kafa
Hocam kahve sözünüzü tutarsınız umarım :)
4:20 adamlar euler vaktinde çözüyor soruları adil değil
PE acaba AI'den olimpiyatçı mi yapacak başımıza topladığı verilerle
Ayt 2024 matematik soru çözümleri bir de siz yaparmisiniz.
telif 🐢
@@derincesi o sırada sorudaki 2 tane sayıyı değiştirip kitaba koyan yayınevleri
düz mantıkla,rusyada o şeyi 29.5 saniyede çözerlemiş.
5:05 bu yüzden 101 e atlayıp çözen ben 😂😂
Benim anlamadıgım p(2n-6) yı da sorarak x kadar sorduktan sonra en son nasıl p(0) ı soruyor bılgısayar. Lise matematıgımle soruyorum kusura bakmayın. p(2n-sonsuz) u sorması gerekmıyor mu en son :D
p(0)’a ulaşınca bilgisayara biz kendimiz p(0)=1 değerini girdiğimiz için orada duracak. p(0)+p(1)+…+p(n) toplamını yapacak.
Browser rusça?
Azerice
@@efepekdemir5045 Mən Azərbaycanda yaşayıram və rus, ingilis, türk, ərəb dillərində azı üzündən oxuya bilirəm. Açılan menu rusca idi. :)
@@legkamran 2:35 de tercume edini gorunce Azerice zannettim sorry
hocam 2025 için mi mutlu yıllar demeye başladınız
1 ay geçti videodan. Takıntı oldu. Hala ara ara bakıyorum soruya.
İçimden bir ses çözümün tek sayıların binary partition'larındaki 1 sayılarının tek sayı da olması üzerinden çözüme giden bir yol olduğunu söylüyor ama keşke bulabilsem.
örneğin 7'yi ele alsak partition'larından 1+2+4 yazilimini ele alsak 1'i çıkardığımızda 2+4 kaliyor ve 2+4 'ü 2*(1+2) şeklinde yazılabiliyor. Bir şekilde bu durumda 7'yi 3'ün partition'ı cinsinden yazabiliyor oluyoruz.
Net bir şey söylemiyorum ama buradan çözüme giden bir algoritma logn'ler ifade edilebilecek bir yöntem olacağını seziyorum ama keşke bulsam.
Neyse bir çözüm bulursanız gözünüzü seveyim paylaşın.
ben de sizle aynı durumdayım, 1 aydır takıntı haline getirdim ve onlarca saatimi harcadım. düşüncem ise video sonunda anlatılan küme sisteminden yola çıkmalıyız gibi. bu konu hakkında konuşmak isterseniz iletişime geçebiliriz.
Threading yapmak hile mi?
Hâlâ "mutlu yıllar" diyorsunuz. Yılı yarıladık!!?
ne güzel işte
bizim taichi salonunda da oyle, her seans basinda sonunda hep bir agizdan mutlu yillar dilenir, guzeldir, hayatin kendisini her gun kutladigini hissettirir
Deliye her gün yılbaşı 😂😊
Olum senin matematikten başka bir işin yok mu ya
Evet.
tebesir ve tahdanin buyusu mu var lan??? bi fizik hocasi bi matematikci kitliyor ekrana
Tesadüf olamaz evet
uga buga kaldım :/
Kız bu da bayram şekeri niyetine iyi gitti 💅💅
O ppyi kaldır
@@ahmet__0 gerginiz gençler dur unutmuştum abi kb
@@Öylesinebıhesapişteçokdaşeyyap ppde ne vardı
Kadin misin
@@YeminEderim-ui4nu yok gayim
7³⁷.7³.7⁷ yapsak(mezun kafası) bilgim 0😅
abi mail attim baksaniza
PE'de bir milyon üyeden dünyada ilk 100'deyim. Bu videoyu yaptığınıza sevindim. Devamı, gelişim adına gelmelidir. "Tam anlamı ile matematik sayılmaz" ifadeniz pek doğru değil. PE ileri matematik bilgisi & programlama yeteneği olanların (_ikisi birden ileri_) çözebileceği sorulardır. Burada ilk %25'te olanlar yüksek seviyeli işlerde yer alan insanlar. Süre konusu, standart bir matematikçinin günlerce uğraşsa da çözemeyeceği bu zorluktaki sorular için şaşırtıcı olabilir. Arşive bakarsanız 5 dakikada çözen de var. Bu soruların en zorlarının bir tık sonrası milenyum problemleridir. O yüzden hayal kırıklığına uğramayın. Ancak sizler ve izleyicileriniz ile TR üniversitelerinde profesöre kadar olan seviyedekiler ilk 50 problemi çözebilmelidir. Tüm problemler için bilgisayar programı 1 dk'dan az sürede sonucu bulamıyorsa matematiksel yönteminiz yetersiz ya da yanlıştır. Soruları çözebilenlerin girebildiği thread forumlara baktığınızda tüm problemler maksimum 15 saniyede çözülmüştür.
Kanka nasıl olunuyor senin gibi
Hocam anladigim kadariyla sizin bu alanda uzmanliginiz var . Ilk 100 de olabilmek için hayatimizin komple matematik olmasi mi gerekiyor yoksa sizin hayatiniz nasil ?
Tebrik ve teşekkür ederiz!
Milenyum problemleri kısmında abartmışsın. Matematik açısından o seviyyede sorular yok. Zira milenyum soruları ağır topoloji, gruplar teorisi ve b. gibi konularda. Project Euler'de sayılar teorisi ve geometri üstünlükte. Ve bir diğer fark, PE soruları saatler hatta dakikalar içinde çözüle bilirken milenyum soruları asırlardır çözülemiyor.
@@TofigFarajli ufak değişiklikler büyük farklar yaratır. İlk sorularda çözüm oranı %90lardayken son sorularda birkaç kişiye kadar düşüyor. Soruların çözümünde bahsettiğin matematik dalları çözüm bölgesini sınırlamada zaten kullanılıyor.
Cevap 9997
nasil bulduk abi
Cok buyuk sayilar ve mod operatoru gorunce aklima hep jenerator fonksiyonlar geliyor. Bununla alakali 3Blue1Brown da bir anlatim mevcut. ua-cam.com/video/bOXCLR3Wric/v-deo.html
oley
wow
It's joever
Çocukça başlayan video, saçma sapan muhabbet.
Çok seksi bir videoyu ellerine sağlık