[OSM-Niederbayern] Matheraetsel abcde Summe
Alexander Lehner
lehner at edv-buero-lehner.de
Di Mär 12 20:12:05 CET 2013
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.
-------------- nächster Teil --------------
// -*- 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;
}