Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wyznaczanie modulo z ciągu fibonacciego

Ostatnio zmodyfikowano 2017-11-07 19:00
Autor Wiadomość
jatoprzechuj
Temat założony przez niniejszego użytkownika
Wyznaczanie modulo z ciągu fibonacciego
» 2017-10-28 19:14:12
Tak jak w temacie muszę wyznacz modulo z ciągu fibonacciego. W pierwszej linii wejścia podana jest liczba testów T (1 ≤ T ≤ 100). W następnych T wierszach podane są pary n, m (1 ≤ n,m ≤ 109). Używam kolejki, a mimo to wyrzuca mi Seg. Fault. Jakieś pomysły? n-liczba, m-modulo, t-test.
C/C++
#include<iostream>
#include<queue>
using namespace std;
queue < int > kolejka;

int f( int a )
{
    int fun;
    if( a == 0 ) return 0;
   
    if( a == 1 ) return 1;
    else if( a > 1 )
    {
        fun = f( a - 1 ) + f( a - 2 );
        return fun;
    }
}

int main()
{
    int t, n, m;
    int i = 0;
    cin >> t;
   
    while( t > 0 )
    {
        cin >> n >> m;
        int wynik = f( n );
        kolejka.push( wynik % m );
        t--;
    }
    int wielkosc = kolejka.size();
    for( int j = 0; j < wielkosc; j++ )
    {
        cout << kolejka.front() << endl;
        kolejka.pop();
    }
   
    return 0;
}
P-166143
garlonicon
» 2017-10-28 19:44:37
Zobacz, co się stanie przy obliczaniu na przykład
f( 100 )
.
P-166144
mateczek
» 2017-10-28 19:57:14
nie używaj tego algorytmu to jest nieporozumienie !!!!
C/C++
int f( int a )
{
    int fun;
    if( a == 0 ) return 0;
   
    if( a == 1 ) return 1;
    else if( a > 1 )
    {
        fun = f( a - 1 ) + f( a - 2 );
        return fun;
    }
}
szybciej policzysz pisemnie na kartce, niż ten algorytm na intel i7 :). 
P-166145
jatoprzechuj
Temat założony przez niniejszego użytkownika
» 2017-10-28 20:23:07
1. dlaczego program wywala dla f(100)?
2. To jeśli nie tym to jakim sposobem liczyć ciąg fibonacciego?
P-166146
mateczek
» 2017-10-28 20:27:24
1 wynik nie mieści się w int !!!, algorytm jest durny !!! Jeśli wiesz na jakiej zasadzie działa algorytm który zastosowałeś powinieneś wiedzieć dlaczego go nie używać
2 normalnie pętlą iteracyjne jako suma dwóch ostatnich wyrazów ciągu

podaj przykładowe wejście i oczekiwany output. Bo nie wiem jak powinien wyglądać ciąg. (dwa pierwsze wyrazy) czy będzie to
0 1 1 2
czy
1 1 2

P-166147
jatoprzechuj
Temat założony przez niniejszego użytkownika
» 2017-10-28 20:30:59
Dla danych wejściowych

10
1 10
2 10
3 10
4 25
5 25
6 25
7 27
8 29
9 31
10 33

poprawną odpowiedzią jest
1
1
2
3
5
8
13
21
3
22
P-166148
mateczek
» 2017-10-28 20:34:50
P-166149
jatoprzechuj
Temat założony przez niniejszego użytkownika
» 2017-10-28 20:41:02
Dlaczego modulo jest wewnątrz pętli?
P-166150
« 1 » 2 3 4 5 6 7
  Strona 1 z 7 Następna strona