45 / 47
Jul 2015
1 month later

Nie wiem, czy to błąd, czy ktoś celowo to skasował, ale podobna sytuacja jest z zadaniem: 1033. Test 2
Kod zadania: PP0601A. Pół roku temu robiłem to zadanie i coś mi nie wychodziło, teraz znalazłem błąd w moim rozumowaniu, chcę wysyłać, a tu... Wrong answer! confused

1 month later

Ja mam spory problem. Ten program jest zdecydowanie najbardziej skomplikowanym programem, jaki do tej pory napisałem (dopiero zaczynam programować), więc byłbym bardzo szczęśliwy, jeżeliby mi przeszło jego rozwiązanie. W domu wszystko mi działa bez problemu (używam Dev C++), jednak kiedy wysyłam rozwiązanie na serwer, to wyskakuje mi błąd SIGFPE.
Czy ktoś mógłby mi wskazać błąd w moim programie?

#include <iostream>
using namespace std;
int nwd(int a, int b)
{
    while(a>0 && b>0)
    {
            a=a%b;
            if(a==0)
            {
                   break;
            }
            b=b%a;
    }
    return a+b;
}
int nww(int a, int b)
{
    return a*b/nwd(a, b);
}
int main()
{
    int n, a, i, b;
    cin>>n;
    unsigned long long int nwww[n];
    b=n;
    while(b)
    {
            cin>>a;
            unsigned long long int tab[a];
            i=a;
            while(i)
            {
                    cin>>tab[i-1];
                    i--;
            }
            while(a>1)
            {
                      tab[a-2]=nww(tab[a-2], tab[a-1]);
                      a--;
            }
            nwww[b-1]=tab[0];
            b--;
    }
    while(n)
    {
            cout<<nwww[n-1]<<endl;
            n--;
    }
system("pause");
return 0;
}
2 months later

Nie wiem co mam źle w tym zadaniu. Nie dostaje TLE tak jak inni tylko WA. Wszystkie wpisane przeze mnie testy działają.
Gdyby ktoś dał powiedział co mam źle byłbym wdzięczny

1 month later

Szczerze mówiąc nie rozumiem ani kodu z drugiego postu nade mną ani nie wiem jak rozwiązać to zadanie za pomocą średniej harmonicznej, ale przecież wystarczy policzyć deltę dla tego równania i jej znak wyznacza liczbę rozwiązań tego równania.
Oto testy, jakby miały komuś pomóc:

5.0 6.0 7.0
4.0 4.0 4.0
4.0 5.0 4.0
-5.0 5.0 4.0
4.0 5.0 -5.0
4.5 2.5 0.5
4.5 2.5 -0.5
1.0 4.0 1.0
1.0 2.0 1.0
4.0 4.0 1.0
2.0 2.0 0.5
0.5 2.0 2.0

Output:

0
0
0
2
2
0
2
2
1
1
1
1
1 year later

Mam WA, choć dla przykładowych testów kod daje poprawne odpowiedzi. Jakiś pomysł wink?

1 month later

Witam, napisalem program, dla przykladowych danych wyswietla dobre wyniki ale sedzia upiera sie ze sa bledne odpowiedz.
Prosze o pomoc jesli ktos wie dlaczego nie uznaje mi programu.

#include <iostream>
#include <cstdio>
#define MAXV 1000
using namespace std;
int odwiedzone[MAXV+1];
struct node
{
       int inf;
       node* next;   
       node* prev;   
};
struct Stos
{
       int tab[MAXV+1];
       int stan;
       Stos(){stan=0;}
       void push(int v)
       {
            tab[stan] = v;
            stan++;
       }
       int pop()
       {
             if(stan>0)
             {
                       stan--;
                       return tab[stan];
             }
       }
       bool pusty()
       {
            if(stan==0){return true;}else{return false;}
       }
};
struct Kolejka
{
       int start, stop;
       int tab[MAXV+1];
       Kolejka()
       {
                start = 0;
                stop = 0;
       }
       void dodajNaKoniec(int v)
       {
            tab[stop] = v;
            stop++;
       }
       int usunZPoczatku()
       {
           int tmp = tab[start];
           start++;
           return tmp;
       } 
       bool pusta()
       {
            if(stop==start){return true;} else {return false;}
       }
};
struct Graf
{
       node* lista[MAXV+1];
       int wierzcholki;
       Graf()
       {
                for(int j = 0; j<=MAXV; j++)
                {
                      lista[j] = NULL;
                }
       }      
       void dodaj(int v, int i)
       {
            if(i!=0)
            {
                node* temp = new node;
                temp->inf = i;
                temp->next = lista[v];  
                lista[v] = temp; 
            }       
       }
       void DFS(int v)
       {
            for(int i = 0; i<=wierzcholki; i++)
            {
                    odwiedzone[i] = 0;        
            }
            Stos stos;
            int tmp;
            node* p = new node;
            stos.push(v);
            odwiedzone[v]=1;
            while(!stos.pusty())
            {
                  tmp = stos.pop();
                  cout<<tmp/*<<" "*/;
                  p = lista[tmp];
                  while(p!=NULL)
                  {
                                if(odwiedzone[p->inf]==0)
                                {
                                     stos.push(p->inf);
                                     odwiedzone[p->inf] = 1;
                                }
                                p = p->next;
                  }           
            }
       }
       void BFS(int v)
       {
            for(int i = 0; i<=wierzcholki; i++)
            {
                    odwiedzone[i] = 0;        
            }
            Kolejka kolejka;
            int tmp;
            node* p = new node;
            kolejka.dodajNaKoniec(v);
            odwiedzone[v]=1;
            while(!kolejka.pusta())
            {
                  tmp = kolejka.usunZPoczatku();
                  cout<<tmp/*<<" "*/;
                  p = lista[tmp]; 
                  while(p!=NULL)
                  {
                                if(odwiedzone[p->inf]==0)
                                {
                                     kolejka.dodajNaKoniec(p->inf);
                                     odwiedzone[p->inf] = 1;
                                }
                                p = p->next;
                  }                                         
            }
       }
};
int main()
{
    int t, n, z, m, v, a, b=0;
    cin>>t;
    Graf tabGrafow[t];
    for(int i = 0; i < t; i++)
    {
            cin>>n;
            tabGrafow[i].wierzcholki = n;
            for(int j = 0; j < n; j++)
            {       
                    b=0;
                    cin>>z;
                    cin>>m;
                    for( int k = 0; k < m; k++)
                    {
                         cin>>a;
                         tabGrafow[i].dodaj(z,a);
                    }
            }
            cout<<"graph "<<i+1<<endl;
            cin>>z;
            cin>>m;
            while(z!=0)
            {
                       if(m==1)
                       {
                               tabGrafow[i].BFS(z);
                       }
                       else
                       {
                               tabGrafow[i].DFS(z);
                       } 
            //cout<<endl;
            cin>>z;
            cin>>m;                    
            } 
    }
}

@edit
dobrze, chyba juz wiem gdzie mam blad D: zle mi dodaje w liscie sasiedztwa elementy :<

1 month later

Witam, mam mały problem, mianowicie nie wiem co jest nie tak z moim kodem confused

Tu był kod.
7 months later
2 months later

Witam. co oznacza threshold: 5 jako wynik tego zadania? 2 pierwsze zestawy przeszedłem bez problemu i teraz próbuję napisać na tyle szybki algorytm żeby zaliczyło 3. I chyba mi się udało, bo na ideone dla

1
3
10000

mam czas działania 0.1s

edit: właśnie mi zaliczyło, po drobnej optymalizacji. Ale dalej przydało by się info co to za kod błędu.

Prawdopodobnie chodzi o to, że próg, aby zadanie zostało zaakceptowane wynosi 5 pkt.

2 months later

Witam. Podpinam się do postu
Mam kod, który na danych testowych działa dobrze, a przy zgłoszeniu daje złe odpowiedzi. Gdzie może być błąd ?

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
void DFS (vector <vector <int> > &graf, int wierzcholek);
void DFS (vector <vector <int> > &graf, int wierzcholek, vector <bool> &uzyto);
void BFS (vector <vector <int> > &graf, int wierzcholek);
vector <vector <int> > graf;
vector <int> wierzcholki;
int main ()
{
    ios_base::sync_with_stdio(0);
    int t;					// Ilość grafów
cin >>t;

// Pobierz info. o każdym grafie i wykonaj dla niego fun. DFS lub BFS
for (int i__ =0; i__ <t; i__++)
{
    int n;				// Ilość wierzchołków w grafie
    cin >>n;

    for (int j__ =0; j__ <n; j__++)
    {
        int i, m;		// 'i-ty' wierzchołek i 'm' wierzchołków jakie są z nim połączone
        cin >>i >>m;

        wierzcholki.clear ();

		for (int z =0; z <m; z++)
		{
			int x;		// Sąsiedni wierzchołek do 'i-tego'
			cin >>x;
			wierzcholki.push_back (x);
		}
		graf.push_back (wierzcholki);
    }

	cout <<"graph " <<(i__ +1)<<endl;

    while (1)
    {
    	int v, i;
        cin >>v >>i;

		// Przerwij pętlę jeżeli koniec danych do odczytu
        if (v ==0 && i ==0)
            break;

		if (i ==0)
			DFS (graf, v);
		else
			BFS (graf, v);

        cout <<endl;
    }

    graf.clear ();
}

return 0;
}
//******************************************************************************************
//******************************************************************************************
void DFS (vector <vector <int> > &graf, int wierzcholek)
{
	vector <bool> uzyto (graf.size (), false);
	DFS (graf, wierzcholek, uzyto);
}
//******************************************************************************************
//******************************************************************************************
void DFS (vector <vector <int> > &graf, int wierzcholek, vector <bool> &uzyto)
{
	vector<int>::iterator iter;	//iterator po sąsiadach wierzchołka
    uzyto[wierzcholek] =true;	//kolorujemy odwiedzony wierzchołek
    cout <<wierzcholek <<" ";

// Przejdź po połączonych wierzchołkach, jeśli tam nie byłeś wywołaj fun. DFS
for (iter =graf [wierzcholek -1].begin (); iter !=graf [wierzcholek -1].end (); iter++)
{
    if (uzyto [*iter] ==false)
		DFS (graf, *iter, uzyto);
}
}
//******************************************************************************************
//******************************************************************************************
void BFS (vector <vector <int> > &graf, int wierzcholek)
{
	vector <int>::iterator iter;
	vector <bool> uzyto (graf.size (), false);
	queue <int> Q;
    uzyto [wierzcholek -1] =true;
Q.push (wierzcholek);

cout <<wierzcholek <<" ";

while (!Q.empty ())
{
	int u =Q.front ();
	Q.pop ();

	for (iter =graf [u -1].begin (); iter !=graf [u -1].end (); iter++)
	{
		if (uzyto [*iter -1] ==false)
		{
			cout <<*iter <<" ";
			uzyto [*iter -1] =true;
			Q.push (*iter);
		}
	}
}
}



-- Cz lip 19, 2012 12:23 pm --

Może ktoś rzucić na to okiem? Wiem, że zadanie stare ale dla mnie jest ważne to dlaczego na testowych danych działa Ok, a na stronie wyrzuca 'Błędna odpowiedź'.

1 year later

Program działał z cout i cin poprawnie, jednak dostałem 10/15 pkt. z TLE dla ostatniego testu i chciałem go przyśpieszyć. Zamieniłem cout i cin na printf i scanf. Na moim komputerze dalej działa, jednak spoj go nie przyjmuje i nie mogę znaleźć błędu.

-- kod usunięty --
Z góry dziękuję za wszelką pomoc smile

13 days later

blush

Jeżeli chodzi o "graph" to drukuje numer grafu. Moja implementacja daje poprawne wyniki dla zadań testowych (poprawne znaczy się wyjście jest takie samo jak w przykładzie - z dokładnością do białych znaków).

Główna pętla programu (razem z wypisywaniem numeru grafu)

int run(FILE* in, FILE* out)
{
	const int t = readInt(in);
	assert(t <= 100);
    for (int i=0; i<t; ++i)
{
	g.reset();
	g.readFrom(in);
	fprintf(out, " graph %d ", i+1);
	processQueries(in, out);
}

return 0;
}

Jeszcze jakieś wskazówki?

6 months later

Witam wszystkich obecnych!
Walczę z programem wyżej już jakiś czas, nasz kochany sędzia online stwierdzę błędna odpowiedz. Sprawdzałem mnóstwo przykładów, rozwiązywałem je na kartce i na moim kompie i wg mnie ten program liczy wszystko dobrze. Może ma ktoś pomysł o co może chodzić? confused Zapewne coś mi umknęło...

1 year later

Cześć!
Jak na początkującego przystało, zwracam się z pomocą do was!

Stworzyłem kod. Jak na moją głowę i testy które zrobiłem wydawał się dobry. Jak zwykle gdzieś zawiodłem.
Użyłem wskaźników (chociaż mam z nimi wiele problemów) by stworzyć tablice o wielkości którą poda test.

Zresztą co się będę rozpisywał! Poproszę o jakieś wskazówki, nie koniecznie dotyczące tego zadania, ale ogólnie jeżeli coś znajdziecie "dziwnego":

[bbone=cpp,3145]Tu byl kod[/bbone]

Wielkie dzięki wszystko już działa jest AC smile Trzeba dokładniej czytać polecenia:P

1 month later

include

int main(void)
{
int t,n[10],i,j,fact=1,p[10];

scanf("%d",&t);
while(i

{
for(i=0;iscanf("%d",&n[i]);
p[i]=n[i];
fact=1;
for(j=1;j<=p;j++)
fact=j*fact;
printf("%d\n",fact);
i++;

}

return 0;
}
i am getting time limit exceeded. I am not understanding what changes have to be done.it is giving crct output in my c compiler. plzz help me out of this.