Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se C a C++. Zároveň využij akce až 80 % zdarma při nákupu e-learningu - více informací.
discount week 80 + hiring
Avatar
Neaktivní uživatel:9.4.2016 13:09

Nazdar chlapi, poradíte my nejaký algoritmus na súčet všetkých permutácií nejakého čísla. Potrebujem algoritmus a nie zdroják ,

Odpovědět
9.4.2016 13:09
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:9.4.2016 13:15

A ešte som zabudol, že číslice sa môžu aj opakovať

Editováno 9.4.2016 13:16
Nahoru Odpovědět
9.4.2016 13:15
Neaktivní uživatelský účet
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Petr Čech:9.4.2016 14:44

Co myslíš přesně permutacemi s opakováním? Faktoriál? Tam se ale čísla neopakují.

Nahoru Odpovědět
9.4.2016 14:44
the cake is a lie
Avatar
Neaktivní uživatel:9.4.2016 15:25

Majme napr. číslo 4247, a potrebujem vypočítať súčet všetkých možných permutácií čísla , čiže 4247+4274+472­4...=?, vtip je ale v tom, že aj keď prehodíš 4 zo 4 tak to musíš brať ako nové číslo, čiže 4247 keď prehodím štyrky dostanem to isté číslo ale musím to pripočítať do súčtu. A ja potrebujem algoritmus ako toto všetko naprogramovať ?? Vopred diki za odpoveď.

Nahoru Odpovědět
9.4.2016 15:25
Neaktivní uživatelský účet
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Petr Čech:9.4.2016 15:28

Už chápu.
Nestačil by kód v C#? Nebo jak jinak mám popsat algoritmus?

Editováno 9.4.2016 15:30
Nahoru Odpovědět
9.4.2016 15:28
the cake is a lie
Avatar
Odpovídá na Petr Čech
Neaktivní uživatel:9.4.2016 15:30

Stačil :D , ale pls popis mi tam aj komentáre, že čo robíš, diki.

Nahoru Odpovědět
9.4.2016 15:30
Neaktivní uživatelský účet
Avatar
coells
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
coells:9.4.2016 18:48

Vždyť je to jen trocha elementární matematiky, zkus si rozepsat číslo 123 a určitě v tom najdeš systém.
Výsledný program je poměrně krátký.

static long permutationSum(long n, long i = 1, long f = 1, long g = 0, long h = 0) {
    if (n > 0)
        return permutationSum(n / 10, i + 1, f * i, g * 10 + 1, h + (n % 10));
    else
        return (i > 1) ? f * g * h / (i - 1) : 0;
}

static void Main()
{
    Console.WriteLine(permutationSum(123));
}
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
9.4.2016 18:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.