Das ist lustig, mir wurde gestern erst so eine Aufgabe vorgelegt - der Enkel meiner Nachbarn musste so ein Zahlendreieck in der zweiten Klasse in einer Klassenarbeit lösen
B+D muss A ergeben, B+E muss C ergeben, D+E muss F ergeben. Es gibt da übrigens nur eine Lösung.
Wie wäre es mit Bruteforce?
Ich habe bisher keine Formeln gefunden, das zu lösen. Durch geschicktes rumschubsen geht das aber
zum Teil mit Logik. Mit Bruteforce war es in 0 ms zu lösen, da die Zahlen nicht sonderlich groß sind (ungenau, da GetTickCount).
Code:
int main() {
DWORD t = GetTickCount();
for(int b = 1; b < 45; b++)
for(int d = 1; d < 33; d++)
for(int e = 1; e < 33; e++)
if(b+d==50 && b+e==45 && d+e==33)
cout << b << ' ' << d << ' ' << e << endl;
t = GetTickCount() - t;
cout << t << endl;
system("PAUSE");
return EXIT_SUCCESS;
}