Rezolvare:
Au dat soluţii corecte: Cristian Ciobanu, Arthur Weber, Claudiu Drăgan, Cristina Petrescu, Aurel Ionescu, Ady Nicolae, Szabo Zoltan, Dinu Elena, Ştefan Gaţachiu.
Am păstrat două din soluţiile primite:
1. Szabo Zoltan:
Numărul va fi cu atât mai mare cu cât folosim mai multe cifre și cu cât reușim să poziționăm cifrele mai mari pe pozițiile cele mai semnificative.
În acest sens începem cu primele două cifre 9 și 8.
9*8=72
Dacă reușim să generăm un număr de forma 9872abcdef, cu zece cifre, toate distincte, avem garanția că este cel mai mare număr cu această proprietate.
Continuăm cu celelalte produse de cifre: 8*7=56, 7*2=14.
Numărul mai mare este 987256cdef decât 987214cdef.
1. Verificăm dacă putem avea 987256cdef
numărul nostru ar trebui să conțină atât secvența 14=7*2, cât și 10=2*5. Dar cifra 2 nu poate avea două continuări, pentru că toate cifrele apar în număr o singură dată.
Deci nu e bine 987256cdef.
2. Încă nu abandonăm 9872abcdef
verificăm, dacă axistă vreo variantă de forma 9872a56def sau 9872ab56ef.
cum 5*6=30 și 7*2=14, avem deja toate cifrele, iar aceste valori nu suint compatibile cu forma 9872a56def.
Pentru un număr 9872ab56ef numărul mai mare este 9872305614, ceea ce respectă și condițiile impuse de problemă.
Deci soluția este 9872305614.
2. Arthur Weber:
Soluţia este 9872305614. Este maximul a 4656 numere întregi care verifică cele două condiţii din enunţ.
Pentru rezolvarea problemei am scris următoarea procedură (care generează şi toate cele 4656 de numere):
Module Module1
Dim A(0 To 10) As Byte
Dim Flags(0 To 9) As Boolean
Dim Nums(5000) As UInt64
Dim Count As Integer = 0
Sub GenNumar(ByVal K As Byte, ByVal N As Byte)
If K > N Then
Dim Num As UInt64 = 0
For I As Byte = 1 To N
Num = 10 * Num + A(I)
Next I
Dim S As String = CStr(Num)
Dim Ok As Boolean = True
For I = 1 To N - 1
If InStr(S, CStr(A(I) * A(I + 1))) = 0 Then
Ok = False
Exit For
End If
Next I
If Ok Then
Count += 1
Nums(Count) = Num
End If
ElseIf K = 1 Then
For I As Byte = 1 To 9
If Not Flags(I) Then
A(K) = I
Flags(I) = True
GenNumar(K + 1, N)
&n