Kezdőoldal » Számítástechnika » Programozás » Kombinációk kiszámítása, hogyan?

Kombinációk kiszámítása, hogyan?

Figyelt kérdés

Sziasztok!

Van egy feladat amiben ki kellene számolnom a különböző lottó típusok lehetséges számkombinációinak a számát. De van egy megkötés, hogy csak int32 adattípust használhatok.

C#-ról lenne szó, valaki tudna írni valamilyen ötletet?



2012. okt. 4. 16:46
 1/10 anonim ***** válasza:

N darab elemből kiválasztunk K darabot a sorrend figyelembe vétele nélkül, és ezeket - úgy, hogy egy elem csak egyszer szerepelhet - sorbarendezzük.


Ezen az elven indulj el. Deklarálsz egy tömböt, amiben a számokat tárolod (90 elemű tömb), majd ott megnézed, hogy hányszor tudsz 5 különböző számot kiválasztani, az X (a maximális lehetőségek száma (90)) elemű többől.

2012. okt. 4. 16:53
Hasznos számodra ez a válasz?
 2/10 A kérdező kommentje:
Köszi, próbálkozok..
2012. okt. 4. 17:31
 3/10 A kérdező kommentje:
Nem igazán megy a dolog..:/
2012. okt. 4. 19:48
 4/10 A kérdező kommentje:
valamit biztos elrontok
2012. okt. 4. 19:48
 5/10 anonim ***** válasza:

Nem kell tömb és semmi egyéb, mivel megadni nem kell őket.

Itt megtalálod a szükséges képleteket, csak implementálod őket és kész: [link]

2012. okt. 4. 20:11
Hasznos számodra ez a válasz?
 6/10 A kérdező kommentje:
az a baj ha a képletet használom akkor nem férek el int32-ben valahogy egyszerűsíteni kéne, de nem tudok..
2012. okt. 4. 20:23
 7/10 anonim ***** válasza:
Akkor nincs megoldás. Mert 90*89*88*87*86 lehetőség van (ugye nem kell magyaráznom miért) 5-ös lottónál, ez pedig 5 milliárd körüli értéket ad, és még az unsigned int (ez is int32, csak előjel nélküli, csak pozitív szám) is csak 4,3 milliárdig tud számot ábrázolni.
2012. okt. 4. 20:52
Hasznos számodra ez a válasz?
 8/10 A kérdező kommentje:
Hát pedig biztos van megoldása, létezik a feladat, amit az első válaszoló írt az jó lenne szerintem csak hülye vagyok hozzá..:/
2012. okt. 4. 21:11
 9/10 anonim ***** válasza:

Én vagyok az első válaszoló (meg az utolsó is), és gondolj bele:

Az unsigned int 4,294,967,295-ig tudja a számokat ábrázolni, 0-tól kezdve, negatív nélkül, az int pedig 2,147,483,647-ig, szóval ebben nem nagyon tudod megcsinálni.


N-darab elemből [a lottószámokból (90)] kiválasztunk K darabot [annyit, amennyit a lottóban meg kell jelölni (5)] a sorrend figyelembe vétele nélkül [nem számít, hogy az első szám 5, vagy 7, vagy 45...], úgy, hogy egy elem csak egyszer szerepelhet [ha 90-ből választasz egyet, már csak 89-ből választhatod ki a következőt, 88-ból a harmadikat, 87-ből a negyediket, 86-ból az ötödiket, így 90*89*88*87*86 lehetőség van, a permutáció elvéhez igazodva]. Ezek alapján 32 bites int-en nem lehet ábrázolni a számot, mert a 90*89*88*87*86 = 5,273,912,160, ami alapján nem fér bele az int, de még az uint hatáskörébe sem. Ezt csak 64 bites int-el lehet megoldani, azaz long-al.

2012. okt. 5. 09:03
Hasznos számodra ez a válasz?
 10/10 A kérdező kommentje:
Hmm értem. Akkor úgy érzem csalni fogok, a végeredményt fogom konvertálni int32-vé :D
2012. okt. 5. 13:13

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!