Thema
|
Datum
|
Von Nutzer
|
Rating
|
Antwort
|
|
28.02.2008 08:44:39 |
quadi |
|
|
|
28.02.2008 13:21:44 |
Holger |
|
|
|
28.02.2008 19:07:05 |
quadi |
|
|
Aw:Aw:Aw:Programm für Mathe-Problem |
29.02.2008 17:06:00 |
Holger |
|
|
Von:
Holger |
Datum:
29.02.2008 17:06:00 |
Views:
1138 |
Rating:
|
Antwort:
|
Thema:
Aw:Aw:Aw:Programm für Mathe-Problem |
Hallo quadi,
nachstehend erhälst du ein Makro, solche Kombinationen zu suchen. Da mir das Programmieren von Permutation schon immer zu kompliziert war, verwende ich Zufallskombinationen, die ja irgendwann die gesuchte Permutation bringen sollen. Doch Vorsicht! Manche Kombinationen werden unter bestimmten Umstände nicht gefunden. Deshalb verwende ich in der ersten For-Next-Schleife in der ersten Do-Loop-Schleife a(i) = b(i) und nicht a(i) = i. So kommt man immer wieder aus einem Zyklus heraus.
Wenn das Programm eine Kombination gefunden hat, werden in der MsgBox die Exponenten untereinander angezeigt, der für die 1 als erstes usw. Wenn eine Lösung gefunden wurde, kannst du das Makro wieder starten. Da Zufallszahlen verwendet werden, entsteht dadurch kein Nachteil für die Laufzeit.
Übrigens:
1 ^ 9 + 2 ^ 5 + 3 ^ 10 + 4 ^ 8 + 5 ^ 1 + 6 ^ 6 + 7 ^ 7 + 8 ^ 4 + 9 ^ 2 + 10 ^ 3 = 999999
Sub Potenzsumme()
Randomize
Anz = 10
ReDim a(Anz), b(Anz)
For i = 1 To Anz
b(i) = i
Next i
Do
For i = 1 To Anz
a(i) = b(i)
Next i
For i = 1 To Anz
Do
c = Int(Rnd * Anz) + 1
b(i) = a(c)
Loop Until b(i) <> 0
a(c) = 0
Next i
e = 1
For i = 2 To 10
e = e + i ^ b(i)
Next i
Loop Until e > 999969 And e < 1000000
s = ""
For i = 1 To Anz
s = s + str(b(i)) + vbCrLf
Next i
MsgBox s + vbCrLf + CStr(e)
End Sub
Gruß
Holger
quadi schrieb am 28.02.2008 19:07:05:
Hallo Holger,
Zunächst danke für den Beitrag! Die größte Zahl ist 7^7 (Bei der Zahl7)und 9^6 bzw. 8^6. Die Potenz 6 (und alle höheren)kann nur den kleineren Zahlen zugeteilt werden. Z.B 3^10 oder 4^9.
Gruß, quadi
Die Summe soll 1000000 nicht überschreiten. Z.B. 1^7+2^9+3^10+4^1+5^8+6^5+7^2+8^3+9^6+10^4=999969.
Das ist noch zu wenig. Es soll eine Lösung geben, die sich mehr an die Million annähert, ohne sie zu überschreiten.
Holger schrieb am 28.02.2008 13:21:44:
Hallo quadi,
ich verstehe die Aufgabe nicht. Allein 10 hoch 10 ist größer als 999969.
Die Summe dieser Potenzen errechnetst du z.B. mit
Sub Potenzsumme()
a = 0
For i = 1 To 10
For j = 1 To 10
a = a + j ^ i
Next j
Next i
MsgBox a
End Sub
Gruß
Holger
quadi schrieb am 28.02.2008 08:44:39:
Hallo, Forum
Vielleicht bin ich hier richtig, ansonsten pardon!
Die Zahlen 1 bis 10, jede potenziert mit 1 bis 10 sollen die Summe
999969 erreichen. Kann jemand dafür eine Prozedur schreiben?
Gruß, quadi |
- Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
- Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
- Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
- Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
- Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei
Antworten auf Ihren Beitrag zu benachrichtigen
Bitte geben Sie ein aussagekräftiges Thema an.
Bitte geben Sie eine gültige Email Adresse ein!
- Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
- Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
- Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
- Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
- Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei
Antworten auf Ihren Beitrag zu benachrichtigen
Thema
|
Datum
|
Von Nutzer
|
Rating
|
Antwort
|
|
28.02.2008 08:44:39 |
quadi |
|
|
|
28.02.2008 13:21:44 |
Holger |
|
|
|
28.02.2008 19:07:05 |
quadi |
|
|
Aw:Aw:Aw:Programm für Mathe-Problem |
29.02.2008 17:06:00 |
Holger |
|
|