-
Data: 2012-01-16 11:02:34
Temat: Sumowanie
Od: "M.M." <m...@N...gazeta.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Hey
Jestem prawie pewny ze jest na to analityczny wzor. Przypomni
ktos? Problem: na ile sposobow mozna zsumowac N liczb,
tak aby kazdy skladnik byl z przedzialu domknietego <0,M> i
suma zeby wynosila M. Oczywiscie chodzi o liczby calkowite.
Przykladowe sumy dla N=3 i M=5
5 + 0 + 0 = 5 // poprawna
3 + 2 + 0 = 5 // poprawna
2 + 2 + 1 = 5 // poprawna
2 + 2 + 2 = 6 // niepoprawna
2 + 2 + 0 = 4 // niepoprawna
-1 + 6 + 0 = 5 // niepoprawna
Dla liczb z przedzialu od 1 do M mozna to zadanie rozwiazac zamieniajac
kodowanie binarne na kodowanie unarne. Np. na ile sposobow mozna zsumowac
3 liczby aby uzyskac 10? Kreski to liczby kodowane unarnie, a dwukropki
to separatory pomiedzy liczbami:
||:|||||:||| -> 2 + 5 + 3 = 10
Teraz widac ze zadanie mozna przedefinowac:
Na ile sposobow mozna rozstawic dwukropki pomiedzy kreskami?
Mamy (9 nad 2) = 36
A jak to rozwiazac jesli zera tez sa dozwolone? Ponizszy programik niby
rozwiazuje, ale ma zlozonosc wykladnicza wzgledem (M+1) ^ N :/
Pozdrawiam
----------------------------------------------------
-------------------
#include <cstdlib>
#include <cstdio>
#define MAX (8) // M
#define DEPTH (10) // N
typedef int ityp;
typedef const int cityp;
typedef unsigned int utyp;
typedef const unsigned int cutyp;
static utyp find( cutyp sum=0 , cutyp depth=0 ) {
if( depth == DEPTH )
return sum == MAX; // if( sum == MAX ) return 1; else return 0;
utyp res = 0;
for( ityp i=0 ; i<=MAX ; i++ )
res += find( sum+i , depth+1 );
return res;
}
int main( int argc, char *argv[] ) {
utyp sum = find();
printf("sum = %u\n",sum);
return 0;
}
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Następne wpisy z tego wątku
- 16.01.12 11:36
- 16.01.12 12:46 f...@g...pl
- 16.01.12 12:58 Mirek
- 17.01.12 08:04 M.M.
- 17.01.12 09:30 Stachu 'Dozzie' K.
- 17.01.12 09:33 Roman W
- 17.01.12 11:03 M.M.
- 17.01.12 11:15 Jacek
- 17.01.12 11:17
- 17.01.12 11:19 Stachu 'Dozzie' K.
- 17.01.12 11:24 Stachu 'Dozzie' K.
- 17.01.12 14:31 Roman W
- 17.01.12 14:30 Roman W
- 17.01.12 15:00 Jacek
- 17.01.12 15:30 M.M.
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-03-14 Lublin => JavaScript / Node / Fullstack Developer <=
- 2025-03-14 Warszawa => Account Manager - Sprzedaż Usług Rekrutacyjnych <=
- 2025-03-14 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-03-14 VAT-R Umowa najmu na adres zamieszkania
- 2025-03-14 Gliwice => IT Expert (Network Systems area) <=
- 2025-03-14 Warszawa => Junior Rekruter <=
- 2025-03-14 Wrocław => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-03-14 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-14 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-03-13 Raspberry Pi 3 Model B+
- 2025-03-13 Kuchenka elektryczna
- 2025-03-12 test
- 2025-03-13 własny ekran startowy
- 2025-03-13 Błonie => IT System Administrator <=
- 2025-03-13 Częstochowa => Manager ds. produktu <=