• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SPOJ - input/output - poprawność pobierania danych i wypisywania wyników

+1 głos
1,548 wizyt
pytanie zadane 18 stycznia 2016 w C i C++ przez Czapa Nowicjusz (200 p.)

Siedzę już dłuższy czas nad zadaniem za SPOJA, dokładnie nad "Prime Generator". Po przesłaniu kodu do sprawdzenia dostaję odpowiedź WA. Wydaje mi się, że mój kod zwraca poprawne wyniki więc zanim zagłębie się w szukanie błędu chciałem się upewnić, że format zwracanych przeze mnie danych jest poprawny. 

Ze SPOJ'a:

Input

The input begins with the number t of test cases in a single line (t<=10). In each of the next t lines there are two numbers m and n (1 <= m <= n <= 1000000000, n-m<=100000) separated by a space.

Output

For every test case print all prime numbers p such that m <= p <= n, one number per line, test cases separated by an empty line.

Example

Input:
2
1 10
3 5

Output:
2
3
5
7

3
5

Fragment mojego kodu odpowiadający za pobieranie i zwracanie wyników:

#include <iostream>

using namespace std;

int main()
{
short ile;

int n,m;
bool tab[100001];


cin>>ile;

for(int i=0;i<ile;i++)
{
        cin>>m>>n;

//
// Fragment wyciętego kodu 
//

        for(int i=0;i<(n-m+1);i++)
        {
        if(tab[i]==false)
        cout<<i+m<<endl;
        }
        cout<<endl;
}
return 0;
}

Najpierw pobieram ilość testów, następnie pobieram parę liczb n,m i od razu dla tej pary wypisuję wynik. Czytając fora natknąłem się na komentarz mówiący "Dont forget to clean up between test cases", dla innych wysłanych i zaakceptowanych zadań nigdy nie robiłem czegoś takiego.

Prosiłbym o komentarz czy nie robię błędu na tym etapie zadania. Z góry dziękuję za odpowiedź.

2 odpowiedzi

0 głosów
odpowiedź 18 stycznia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Pytanie czy ty wogóle rozumiesz co napisałeś? W obu pętlach masz tą samą zmienną do iteracji a potem wypisujez jakieś kosmiczne m+i. Na 90% algorytm generowania liczb pierwszych który wyciełeś też jest błędny.
komentarz 18 stycznia 2016 przez Czapa Nowicjusz (200 p.)
Nie widzę problemu w ty, że mam tą samą zmienną do iteracji w dwóch pętlach. Owszem "m+i" może być dla Ciebie kosmiczne bo nie widzisz reszty kodu. W każdym razie nie takie było moje pytanie. Chodzi mi tylko o format w jakim mam wypisywać wyniki żeby program sprawdzający na SPOJ'u nie wyrzucał mi przez to WA.
komentarz 18 stycznia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
"Chodzi mi tylko o format w jakim mam wypisywać wyniki żeby program sprawdzający na SPOJ'u nie wyrzucał mi przez to WA." WA oznacza wrong answer czyli wypisuje złe odpowiedzi, ale tego powodem nie jest sposób wypisywania
0 głosów
odpowiedź 18 stycznia 2016 przez Sedi Stary wyjadacz (10,200 p.)
Dam Ci "drobną" podpowiedź. Te liczby mają być między m a n. Do tego wystarczy jedna pętla, która idzie od m do n i sprawdza, czy liczba jest po pierwsze różna od 1(gdyż 1 nie jest liczbą pierwszą), i czy dzieli się przez więcej niż przez 1 i samą siebie.

Pozdrawiam :)
komentarz 19 stycznia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Master tam są jakgby grupy testów np 5/n 1 10 /n 2 16 /n 5 78/n 4 68/n 5 89 (/n zamień a entery bo piszę z tel). Więc są potrzebne 2 pętle
komentarz 19 stycznia 2016 przez Sedi Stary wyjadacz (10,200 p.)
Oczywiście, masz rację. Spojrzałem na kod i myślałem, że pętla, która idzie do ile, to jest pętla dla n, a druga dla m i wysnułem zbyt szybki wniosek :) - Pozdrawiam

Podobne pytania

+1 głos
1 odpowiedź 511 wizyt
pytanie zadane 9 sierpnia 2016 w C i C++ przez Kasztan Dyskutant (8,080 p.)
0 głosów
1 odpowiedź 378 wizyt
0 głosów
1 odpowiedź 617 wizyt

93,425 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...