Das hat mir jetzt doch noch keine Ruhe gelassen, ob es wirklich nur eine
Loesung gibt, und ob die Angabe der verschiedenen Einzelsummen
(a+b+c+d+e=15, 21, 26, 29) notwendig ist.
Ein brute-force Algorithmus (siehe attachment), wenn ich mich nicht
verprogrammiert habe, findet nur eine Loesung und erstaunlicherweise gibt
es auch nur 27216 Kombinationen.
Wie errechnet sich die Anzahl Kombinationen:
a darf nicht Null, sein also haben wir 9 Moeglichkeiten.
b darf Null, aber nicht a sein, also wieder 9 Moeglichkeiten.
Dann geht es mit der Permutationenformel ganz normal weiter, also:
9 * 9 * 8 * 7 * 6 = 27216 q.e.d.
Jetzt kann ich wieder ruhig schlafen ;)
A.
// -*- tab-width:4; c-basic-offset:4; indent-tabs-mode: nil; -*-
#include <iostream>
using namespace std;
// abcde
// + bcde
// + cde
// + de
// + e
// -------
// aaaaa
int main( int argc, char** argv )
{
int versuche = 0;
for ( int a = 1; a <= 9; a++ )
{
int sollwert = a * 10000 + a * 1000 + a * 100 + a * 10 + a;
for ( int b = 0; b <= 9; b++ )
{
if ( b == a ) continue;
for ( int c = 0; c <= 9; c++ )
{
if ( c == b || c == a ) continue;
for ( int d = 0; d <= 9; d++ )
{
if ( d == c || d == b || d == a)
continue;
for ( int e = 0; e <= 9; e++ )
{
if ( e == d || e == c || e == b
|| e == a ) continue;
int summe =
a * 10000 + b * 1000 +
c * 100 + d * 10 + e +
b * 1000 + c * 100 + d
* 10 + e +
c * 100 + d * 10 + e +
d * 10 + e +
e;
versuche++;
if ( summe == sollwert )
cout << sollwert
<< " a=" << a
<< " b=" << b
<< " c=" << c
<< " d=" << d
<< " e=" << e
<< endl;
}
}
}
}
}
cout << "Versuche: " << versuche << endl;
}
_______________________________________________
Niederbayern mailing list
[email protected]
http://lists.openstreetmap.de/mailman/listinfo/niederbayern