<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem dwumian</title>
<link>https://forum.pasja-informatyki.pl/tag/dwumian</link>
<description>Powered by Question2Answer</description>
<item>
<title>Dwumiany - brak pomysłu co dalej ;(</title>
<link>https://forum.pasja-informatyki.pl/458315/dwumiany-brak-pomyslu-co-dalej</link>
<description>

&lt;p&gt;Hej!&lt;/p&gt;



&lt;p&gt;Zadanie dotyczy obliczania ile jest możliwości wyznaczenia&amp;nbsp;ze zbioru n elementowego zbioru k elementowego. (dwuman Newtona)&lt;/p&gt;



&lt;p&gt;Próbowałam rozwiązywać to na kilka sposobów, ale niestety na spoju nie zalicza.&lt;/p&gt;



&lt;p&gt;Pierwszym pomysłem było pisanie silni ale niestety zbyt duże wartości przekraczające long long int ;(&lt;/p&gt;



&lt;p&gt;Drugim było wyznaczenie odpowiedniej wartości z tzw trójkąta Pascala - długo zajmowało liczenie&lt;/p&gt;



&lt;p&gt;Trzecim sposobem bylo wyznaczenie odpowiedniego iloczynu i na bieżąco skracanie ułamków..&lt;/p&gt;



&lt;p&gt;Niestety wyskakuje błędna odpowiedz a ja juz nie wiem co zrobiłam tam żle..podejrzewam jednak, że gdzieś pojawia się przepełnienie i dlatego ;(&lt;/p&gt;



&lt;p&gt;tu link do zadania&amp;nbsp;&lt;a href=&quot;https://pl.spoj.com/problems/BINOMS/&quot; rel=&quot;nofollow&quot;&gt;https://pl.spoj.com/problems/BINOMS/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;tu mój kod (trzeci pomysł):&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
//#include &amp;lt;iomanip&amp;gt;
using namespace std;



int main()
{

    int n;
    int k;
    cin&amp;gt;&amp;gt;n&amp;gt;&amp;gt;k;
    if(k&amp;gt;n/2)
        k=n-k;
    //cout&amp;lt;&amp;lt;k&amp;lt;&amp;lt;endl;

    long long int iloczyn=1;
    int doIlu=n-k+1;
    long long int wynik;
    if(k==1) cout&amp;lt;&amp;lt;n&amp;lt;&amp;lt;endl;
    else if(k==0) cout&amp;lt;&amp;lt;1&amp;lt;&amp;lt;endl;
    else
    {
        for(int i=n;i&amp;gt;=doIlu;i--)
    {
        //cout &amp;lt;&amp;lt; setprecision(1000);
        iloczyn=iloczyn*i;
        //cout&amp;lt;&amp;lt;iloczyn&amp;lt;&amp;lt;endl;
    }
    //cout&amp;lt;&amp;lt;&quot;iloczyn &quot;&amp;lt;&amp;lt;iloczyn&amp;lt;&amp;lt;endl;
    //cout&amp;lt;&amp;lt;&quot;DO ilu &quot;&amp;lt;&amp;lt;doIlu&amp;lt;&amp;lt;endl;
    for(int j=2;j&amp;lt;k+1;j++)
    {
        wynik=iloczyn/j;
        iloczyn=wynik;
    }
    cout&amp;lt;&amp;lt;wynik&amp;lt;&amp;lt;endl;
    }

    return 0;
}&lt;/pre&gt;



&lt;p&gt;Będę wdzięczna jeśli ktoś mnie nakieruje &amp;lt;3&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/458315/dwumiany-brak-pomyslu-co-dalej</guid>
<pubDate>Wed, 13 Nov 2019 18:57:13 +0000</pubDate>
</item>
<item>
<title>Dwumian Newtona</title>
<link>https://forum.pasja-informatyki.pl/388335/dwumian-newtona</link>
<description>

&lt;p&gt;Zadanie:&amp;nbsp;
&lt;br&gt;
Napisz program, który wczytuje pary liczb 33&amp;gt;=n&amp;gt;=k&amp;gt;=0 a następnie wypisuje współczynniki dwumianowe &quot;n nad k&quot;.&amp;nbsp;
&lt;br&gt;

&lt;br&gt;
Pary liczb wczytuj tak długo, aż pojawi się para 0,0. Wówczas wypisz ostatni wynik (&quot;0 nad 0&quot; wynosi 1) i zakończ wczytywanie.
&lt;br&gt;

&lt;br&gt;
Przykładowe dane:
&lt;br&gt;
2 1
&lt;br&gt;
15 3
&lt;br&gt;
0 0
&lt;br&gt;

&lt;br&gt;
Wynik:
&lt;br&gt;
2
&lt;br&gt;
455
&lt;br&gt;
1
&lt;br&gt;
Problem:&amp;nbsp;
&lt;br&gt;
Program wywal się prze danych 5 0 i nie pokazuje wyniku dla 0 0. Gdy usunę pierwsze wprowadzanie n i k w main i zostawię tylko to w pętli, program pokazuje wynik dla 0 0 ale wywal się przy 5 0&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;
&lt;br&gt;
Mój kod:&amp;nbsp;
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;

using namespace std;

bool dwumian_Newtona(int n, int k)
{
    int roznica_nk = (n - k);
    unsigned long int wynik = 1;
    int najwieksza = 0;
    int obroty = 0;

    // sprawdzam newralgiczne przypadki
    if (k == 0 || k == n)
        cout /*&amp;lt;&amp;lt; &quot;tu: &quot;*/ &amp;lt;&amp;lt; '1' &amp;lt;&amp;lt; endl;
    else
    {
        // sprawdzamy która silnia w mianowniku jest większa, aby później mogła zosatć skrócona z licznikiem
        if (k &amp;gt; roznica_nk)
        {
            najwieksza = k;
            obroty = roznica_nk;
        }
        else
        {
            // liczba obrotow calego programu zalezy od liczby w mianowniku
            najwieksza = roznica_nk;
            obroty = k;
        }

        // metoda z lekcji (sasiednia para w liczniku/pierwsza liczba z mianownika), wynik poprzedni*nastepna z licznika/2 liczba w mianowniku itd.
        int y = 1;
        while (y &amp;lt; obroty)
        {
            for (int i = (najwieksza + 1); i &amp;lt;= n; i++)
            {
                //cout &amp;lt;&amp;lt; &quot;i: &quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &quot; i+1: &quot; &amp;lt;&amp;lt; i + 1 &amp;lt;&amp;lt; endl;
                //cout &amp;lt;&amp;lt; &quot;y: &quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl;
                wynik = (wynik * (i) / y);
                //cout &amp;lt;&amp;lt; &quot;Wynik w petli: &quot; &amp;lt;&amp;lt; wynik &amp;lt;&amp;lt; endl;
                y++;
            }
        }
        cout &amp;lt;&amp;lt; &quot;wynik: &quot; &amp;lt;&amp;lt; wynik &amp;lt;&amp;lt; endl;
    }
}

int main()
{
    int n = 0;
    int k = 0;

    cin &amp;gt;&amp;gt; n;
    cin &amp;gt;&amp;gt; k;
    while ((n != 0) &amp;amp;&amp;amp; (k != 0))
    {
        dwumian_Newtona(n, k);
        cin &amp;gt;&amp;gt; n;
        cin &amp;gt;&amp;gt; k;
    }
    cout &amp;lt;&amp;lt; &quot;out of while!&quot; &amp;lt;&amp;lt; endl;
    return 0;
}

/*&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/388335/dwumian-newtona</guid>
<pubDate>Tue, 23 Oct 2018 09:30:54 +0000</pubDate>
</item>
<item>
<title>Dwumian Newtona | Indukcja matematyczna | Jak rozwiązywać?</title>
<link>https://forum.pasja-informatyki.pl/361740/dwumian-newtona-indukcja-matematyczna-jak-rozwiazywac</link>
<description>

&lt;p&gt;Witajcie,
&lt;br&gt;

&lt;br&gt;
mam do wykonania następujące dowody z dwumianem Newtona:
&lt;br&gt;
&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=16255299768190126937&quot; style=&quot;height:273px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Jak należy udowadniać zadania z dwumianem Newtona? Czy we wszystkich tych zadaniach mogę użyć indukcji? Mam co do tego wątpliwości już w zadaniu 1.
&lt;br&gt;

&lt;br&gt;
Pozdrawiam!&lt;/p&gt;</description>
<category>Matematyka, fizyka, logika</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/361740/dwumian-newtona-indukcja-matematyczna-jak-rozwiazywac</guid>
<pubDate>Thu, 28 Jun 2018 16:59:04 +0000</pubDate>
</item>
<item>
<title>spoj dwumiany</title>
<link>https://forum.pasja-informatyki.pl/149289/spoj-dwumiany</link>
<description>

&lt;p&gt;zrobiłem zadanie ze spoja&amp;nbsp;&lt;a href=&quot;http://pl.spoj.com/problems/BINOMS/&quot; rel=&quot;nofollow&quot;&gt;http://pl.spoj.com/problems/BINOMS/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;testowałem i nie wiem czemu pokazuje mi błędna odpowiedź, ktoś jakaś wskazówka?&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
unsigned long long Newton( unsigned int n, unsigned int k)     
{
    double wynik = 1;       

    for( unsigned int i = 1; i &amp;lt;= k; i++)   
    {
        wynik = wynik * ( n - i + 1 ) / i;      
    }

    return (unsigned long long) wynik;     
}

//w mainie
        (...)
         scanf(&quot;%d%d&quot;, &amp;amp;n, &amp;amp;k);     
        if(n &amp;lt; k)  printf(&quot;%d\n&quot;, 0);
        else if( k == 0 || k == n ) printf(&quot;%d\n&quot;, 1);   
        else printf(&quot;%d\n&quot;, Newton(n, k));               
...&lt;/pre&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/149289/spoj-dwumiany</guid>
<pubDate>Fri, 10 Jun 2016 18:14:20 +0000</pubDate>
</item>
</channel>
</rss>