[Arşiv] Ticaretle ilgisi olmayan saf matematik, fizik, kimya vb. beyin jimnastiği bulmacaları - sayfa 511

 
jartmailru :

Ya da belki C++?
.
Validate, tek bir parametre işlevidir.
Belki eski moda yol ... bellek tahsis et ve bool önbelleğini al
tüm geçerli argüman değerleri için?

MQL'de, bir mucize ile hokey sayıları tamamen bölünürse bir sipariş açabilirsiniz! :))

Ama cidden, kesinlikle sana uygun değilim.


MetaSürücü :

"|=" - bu durumda bit düzeyinde "veya". Bu şey, A[i]'ye eşit konumlarda bitleri XX kadar yükseltir.

Ve döngüden sonra, birinciden altıncıya kadar olan tüm bitler 1'e eşit olursa, bu, 1'den 6'ya kadar olan tüm rakamların X sayısında tam olarak bir kez buluştuğu anlamına gelir.

0x7E - 1111110 ikili sayısının onaltılık gösterimi. (sağ bit sıfırdır)
En çok acıtan da bu. Teşekkür ederim. Anladım!
 
jartmailru :

1. Ya da belki C++?
.
2. Validate - bir parametrenin işlevi.
Belki eski moda yol ... bellek tahsis et ve bool önbelleğini al
tüm geçerli argüman değerleri için?

1. Kagbe'nin özü dil ve çevre değildir. Sonuç olarak, algoritmanın kendisidir.

2. Uh .. Ve daha ayrıntılı olarak?

 
MaxZ :

Ama 125 ms kesinlikle yetişmek değil.

Gerçekten öylesin. 47 msn var

Yazık ki sorunun çözümü yok, sonuçları karşılaştırmak zor... :)))

.

Ama yine de neden karakter karakter karşılaştırmam gerektiğini anlayamadım.

if(A6!=B6 && A5!=B5 && A4!=B4 && A3!=B3 && A2!=B2 && A1!=B1)

?

Görünüşe göre tek bir pozisyonda tesadüfler kritik değil mi?

 
MetaDriver :

Gerçekten öylesin. 47 msn var

Yazık ki sorunun çözümü yok, sonuçları karşılaştırmak zor... :)))

.

Ama yine de neden karakter karakter karşılaştırmam gerektiğini anlayamadım.

if(A6!=B6 && A5!=B5 && A4!=B4 && A3!=B3 && A2!=B2 && A1!=B1)

?

Görünüşe göre tek bir pozisyonda tesadüfler kritik değil mi?

Üzerindekilerde! :DDDD


Performansla mücadele ettim.

Bence şart:

 if (A6 != B6 && A5 != B5 && A4 != B4 && A3 != B3 && A2 != B2 && A1 != B1)

aşağıdaki satırlardan çok daha hızlı yürütülür:

 int A = A6* 100000 +A5* 10000 +A4* 1000 +A3* 100 +A2* 10 +A1;
int B = B6* 100000 +B5* 10000 +B4* 1000 +B3* 100 +B2* 10 +B1;

Ve bu durum birkaç kez tetiklenir. Hızda iyi bir kazanç olduğu ortaya çıkıyor. Belki o kadar önemli olmasa da. Kaldırıp kontrol edebilirsiniz. Ama yine de bu koşulun kendisini haklı çıkardığı gerçeğinden yanayım.

 
MaxZ :


Hız için mücadele ettim:

Bence şart:

 if (A6 != B6 && A5 != B5 && A4 != B4 && A3 != B3 && A2 != B2 && A1 != B1)

aşağıdaki satırlardan çok daha hızlı yürütülür:

 int A = A6* 100000 +A5* 10000 +A4* 1000 +A3* 100 +A2* 10 +A1;
int B = B6* 100000 +B5* 10000 +B4* 1000 +B3* 100 +B2* 10 +B1;

Ve bu durum birkaç kez tetiklenir. Hızda iyi bir kazanç olduğu ortaya çıkıyor. Her ne kadar o kadar önemli olmasa da. Kaldırıp kontrol edebilirsiniz. Ama yine de bu koşulun kendisini haklı çıkardığı gerçeğinden yanayım.

Ama yanlış gibi görünüyor. Örneğin, A4==B4 ise, sayılar farklı olabilirken koşul yanlış olacaktır (örneğin, 65 4 321 ve 12 4 365)
 

düzelttim mi

                                     for ( int B1= 1 ; B1<= 6 ; B1++)
                                      {
                                       if (B1==B2 || B1==B3 || B1==B4 || B1==B5 || B1==B6) continue ;
//                                       if(A6!=B6 && A5!=B5 && A4!=B4 && A3!=B3 && A2!=B2 && A1!=B1)
                                         {
                                           int A = A6* 100000 +A5* 10000 +A4* 1000 +A3* 100 +A2* 10 +A1;
                                           int B = B6* 100000 +B5* 10000 +B4* 1000 +B3* 100 +B2* 10 +B1;
                                           if (A==B) continue ;
                                           if ( MathMod (A,B)== 0 )
                                             Print (A6,A5,A4,A3,A2,A1, "/" ,B6,B5,B4,B3,B2,B1, "=" ,A/B);
                                         }
                                      }
                                   }

aynı 47ms

Yani - bu şartla banyo yapmayı nefig edin.

 
MetaDriver :

düzelttim mi

aynı 47ms

Yani - bu şartla banyo yapmayı nefig edin.

Hatayı anladım... Ve hızdan bahsediyorum! :)) Kafa hiç pişmiyor. Uyku zamanı. Yerel saatim sabah 6...

Ve kodla birlikte şöyle olmalı:

                                     for ( int B1= 1 ; B1<= 6 ; B1++)
                                    {
                                       if (B1==B2 || B1==B3 || B1==B4 || B1==B5 || B1==B6) continue ;
                                       if (A6==B6 && A5==B5 && A4==B4 && A3==B3 && A2==B2 && A1==B1) continue ;
                                       
                                       int A = A6* 100000 +A5* 10000 +A4* 1000 +A3* 100 +A2* 10 +A1;
                                       int B = B6* 100000 +B5* 10000 +B4* 1000 +B3* 100 +B2* 10 +B1;
                                       if (A < B) continue ;
                                       if ( MathMod (A,B)== 0 )
                                           Print (A6,A5,A4,A3,A2,A1, "/" ,B6,B5,B4,B3,B2,B1, "=" ,A/B);
                                    }

Şimdi bu çok fazla

                                       if (A==B) continue ;
                                       if ( MathMod (A,B)== 0 )

komut dosyası bir kez daha daha azına bölüneceğinden ...

 

Saçmalık. Volodya Ve bu dondurulmalı mı? Al bakalım! Ne kadar uzun!

Seninki Domuz. Samimi olarak...

 
MaxZ :

Ve kodla birlikte şöyle olmalı:


Evet, bu daha iyi. 31ms.

22.08.2011 01:58

Saçmalık. Volodya Ve bu dondurulmalı mı? Al bakalım! Ne kadar uzun!

Seninki Domuz. Samimi olarak...

Sanatçının kaprisi .... :)

Ticari motivasyonlar bir hafta içinde sıkıcı hale gelir. Bazen sanat sevgisinden kopabilirsiniz. ;)

 

Bu arada, 5ki için güzellik buldum.

Yani elimizde 5 ile çarpıldığında 5 veren 3 tek sayı (1 3 5) var.

Dan beri hokey numaraları yalnızca 123456, ardından yalnızca iki (5 6) >= 5, yani. bir 5ku (en azından) gerçekçi olmayan bir birime dönüştürülmelidir.

Yaşasın yoldaşlar, şimdi sakinleşebilir ve dosya bağlantınızı sakince bitirebilirsiniz.

Neden: