Czy jest jakiś sposób oparty na nie liczeniu silni, a który to pozwala wygenerować i-tą kombinację k-elementową bez powtórzeń ze zbioru n-elementowego??? Jest taki algorytm combinadic, ale on liczy silnie n-1 elementową po k wobec czego nie wygeneruje poprawnie rozwiązania np. dla n=1000 i k=400, bo maksymalne wartości na jakich można operować to wiadomo unsigned int czyli zmienna może przyjąć max 4,2 mld.
poprawka największej zmiennej jakiej możesz użyć to unsigned long long int poza tym możesz wpisać w google big int ewentualnie skracaj :) tak jak robisz to na kartce 5! /4! = 5
unsigned long long int to 64 bity, ale np. na komputerze z platformą starszej generacji (Pentium I, II) też będzie działać??? ważne, bo nie mam jak sprawdzić!
Co za różnica? Przecież to i tak co najwyżej 21! ;]
tzn. problem już rozwiązany, ale takie z ciekawości pytanie co do tego unsigned long long int. Mam też jeszcze jedno pytanie, bo nigdzie nie pisze o tym w necie. Kiedy typ unsigned int ma 2 bajty a kiedy 4?:) Jak skompiluję na mojej maszynie program (procesor AMD dwurdzeniowy 2200MHz) to tutaj ma 4 bajty. I jak ten program przeniosę na komputer z Pentiumem jakimś 66MHz bądź tymi procesorami co przed pentiumami były to co tam też 4 bajty będą? Pomiędzy jakimi maszynami jest ta granica że tu sa 2 a tu 4? Penitum I/II, Pentium II/III, Pentium III/IV? Prosze o odpowiedź bo to jakas chyba tajemna wiedza bo nigdzie nie jest napisane.
Czy może w C było tak, że unsigned int raz znaczyło w zalezności od maszyny 2 bajty abo 4, a w C++ jest to na stałe ustalone i typu unsigned int ma zawsze 4 bajty oraz typu unsigned long long int zawsze występuje i ma 8 bajtów bez względu na maszynę???
Zależy od architektury procesora. Jeżeli procesor jest 32-bitowy, to zwykły int ma 4 bajty (*8 = 32 bity), a long long int ma dwa razy tyle.
Jaśniej proszę. Jak skompiluję kod na procesorze 32-bitowym i dam program na komputer, w którym jest procesor 16-bitowy to wtedy int ma 2 bajty? Czy 4, bo kompilacja była na 32-bitowym?
Nie. To wtedy nie zadziała.
Nie dam głowy, ale wydaje mi się, że standard definiuje int jako nie mniejszy od typu short. Ogólnie jest tak:
char 1 bajt
short 2 bajty
long 4 bajty
long long 8 bajtów
int zależnie od platformy, nie mniej niż 2 bajty (16 bitów)
EDIT
Program 32-bitowy nie zadziała na platformie 16-bitowej. Architektura 16-bit nie jest kompatybilna z 32-bit. Zachowano kompatybilność wsteczną, a nie "wprzódną".
Ok, czyli rozumiem, że lepiej pozmieniać wszystkie zmienne w programie z unsigned int na unsigned long int oraz z int na long int. A ktoś wie może ile zajmuje typ UINT (z biblioteki windows.h) bo nie mogę tego dziadostwa znaleźć na google.
w zasadzie nieważne, bo raczej rzadko spotkać komputer z 16-bitowa architekturą (8086). Nawet Pentiumy 50,100 są 32-bitowe. Temat można zamknąć.