Numere naturale a, b, c au suma egală cu 63. a mai mic ca b si b mai mic ca c. Ştiind că la împărţirea sumei numerelor b şi c la a se obţin câtul 2 şi restul 15, iar unul dintre numerele a, b, c are cifrele identice, să se determine cele trei numere.
Traducem prima informatie cu suma (banal): a+b+c=63 prima ecuatie
Teorema impartirii cu rest:
b+c=a*2+15 si a<15
Cum traducem in ecuatiile si inecuatiile matematice ca un numar are 2 cifre identice? Acel numar e divizibil cu 11.
In JS introducem s=a+b+c (suma) si r=a%11 restul impartirii la 11 (si analoagele pentru b si c)
Introducem 3 cicluri for imbricate de la 15 la 63. Executam si obtinem mii de solutii. (aveti rabdare la listare)
Punem prima conditie cu un if. s=63. Executam si obtinem sute de solutii
Traducem cu operatorul si (&&) introdus in if ecuatia de la teorema impartirii cu rest. Executam si obtinem zeci de solutii. Tot cu operatorul logic && introducem in if inegalitatile a<b && b<c. Executam si raman 2 solutii.
Restrictia finala in if apare cand folosim operatorul sau logic ||(boolean) r1==0||r2==0||r3==0 unde r este restul impartirii lui a, b, respectiv c la 11. Observati deosebirea JS intre = (atribuire) si == (comparatie).
Rulam programul in final si obtinem tripletul unic solutie.
Revenim la rezolvarea matematica care nu poate opera cu mii de triplete solutii. Avem 3 necunoscute, deci ar fi necesare 3 ecuatii. 2 ecuatii avem: cea cu suma si teorema impartirii cu rest. Introducand b+c in suma obtinem o ecuatie numai in a (o singura necunoscuta): 3*a+15=63. Evident solutia a=16
Raman b+c=47, 16<b<c, numere cu cifre egale 22, 33, 44. Daca b=22, c=25. Alte numere nu verifica.
Deci solutia finala a=16 b=22 c=25. q. e. d.