Spoj - NZEC error.

0

Postanowiłem, że sobie porobię zadania ze spoja, zaczynając od najłatwiejszych - idąc w kierunku tych trudniejszych. No i tutaj parę razy spotkałem problem NZEC bodajże, co mnie zdziwiło bo zawsze u mnie się kompiluje i zawsze daje dobre wyniki.
Pierwsze zadanie: http://pl.spoj.com/problems/CALC/
Moje rozwiązanie:

Scanner scanner = new Scanner(System.in);
       while(true){
           char sign = scanner.next().charAt(0);
           int a = scanner.nextInt();
           int b =scanner.nextInt();
           switch (sign){
               case '+': System.out.println(a+b); break;
               case '-': System.out.println(a-b); break;
               case '/': System.out.println(a/b); break;
               case '*': System.out.println(a*b); break;
               case '%': System.out.println(a%b); break;
           }
       }

Drugie zadanie: http://pl.spoj.com/problems/BINOMS/

       Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        while (n-->0){
            long a = scanner.nextLong();
            long b = scanner.nextLong();

            long up = 1;
            for(long i = (a+1-b); i<=a; i++) up*=i;
            long down = 1;
            for(long i=1; i<=b; i++) down*=i;
            System.out.println(up/down);

        }

Tutaj po prostu "skróciłem" drugi człon mianownika skróciłem po prostu z licznikiem, a potem podzieliłem przez wartość silni z pierwszego członu.
Trzecie zadanie: http://pl.spoj.com/problems/ROWNANIE/

    Scanner scanner = new Scanner(System.in);
       for(;;){
            float a = Float.parseFloat(scanner.next());
            float b = Float.parseFloat(scanner.next());
            float c = Float.parseFloat(scanner.next());
            float delta = b*b-4*a*c;
            System.out.println(delta>0?"2":delta<0? "0":"1");
        }

Tutaj myślałem, że chodzi o to że u mnie w Intelliju nie chciało zapisać liczb zmiennoprzecinkowych oddzielonych '.' tylko musiałbyć ',' ale już sprarsowanie z '.' zadziałało. Tylko nadal nie chce przyjąć.
Czwarte zadanie: http://pl.spoj.com/problems/PP0506A/

   Scanner scanner = new Scanner(System.in);
         int n = scanner.nextInt();
         while (n-->0){
                int numberOfPoints = scanner.nextInt();
                Point[] points = new Point[numberOfPoints];
                for(int i=0; i<numberOfPoints; i++ ){
                    String name = scanner.next();
                    int x = scanner.nextInt();
                    int y = scanner.nextInt();
                    points[i]= new Point(name, x, y);
                }

             Arrays.sort(points);
            for (Point point: points){
                System.out.println(point.name+" "+point.x+" "+point.y);
            }
            System.out.println();
         }
     ...
static class Point implements Comparable<Point>{
        public String name;
        public int x;
        public int y;

        public Point(String n, int xx, int yy) {
            name = n;
            x = xx;
            y = yy;
        }
        public int compareTo(Point point){
            int v = (int)( Math.sqrt(this.x * this.x + this.y * this.y) - Math.sqrt(point.x * point.x + point.y * point.y));
            return v;
        }
    }

Takie same problemy miałem z "Czy umiesz potegować?" Ale w końcu sędzia to puścił. Tutaj nie chce. Jakieś pomysły czemu nie chce zaakceptować?

0

Twój pierwszy i trzeci program nigdy się nie kończą.

0

No tak, ale parę programów z taką konstrukcją mi sędzia przyjął już, więc myślę że to problemem może nie być. Z drugiej strony tam jest napisane: "nieokreslona, niewielka ilość zestawów danych". Niewielka mało mi mówi jak jest nieokreślona. Próbowałem też robić to na while(scanner.has Next()) ale to też nie działało. Próbowałem zrobić z góry narzucona jakaś większa liczbę testów, parę razy tak zrobiłem i za każdym razem zwiekszalem liczbę 10x ale to też nie przeszło.

0

Masz wczytywać dopóki nie przyjdzie ci znak końca pliku, (symulujesz go przez ctrl + d pod Linuksem lub ctrl + z pod Windows) Ew napisz sobie plik z testami, i przekieruj wejście na niego dopisując < nazwategoliku na końcu uruchamiając program z konsoli / dokonując stosownych zmian w twoim ide. Kiedyś spoj miał poradniki jak wczytywać i wypisywać w różnych językach, ale na wskutek zmiany forum zostały przeniesione do archiwum i chyba już usunięte bo mi się (zachowania w zakładkach) strona z nimi nie ładuje.

0

W tym poradniku jest opisane jak radzić sobie z wczytywaniem danych w Java, również, jeśli nie znamy dokładnej ich ilości. Natomiast tutaj mamy inne źródło wiedzy jak dobrać się do tego problemu.
Daj znać czy pomogło, sam jestem ciekaw ;)

0

Pierwsze i trzecie zadanie przeszło jak zmieniłem na while(scanner.hasNext()).
Zadanko z dwumianami pewnie nie chce przejść bo licznik może wychodzić za zakres inta czy longa. Musiłbym to albo BigIntegerem zrobić, albo poskracać wszystkie czynniki z mianownika z licznikiem i wymnożyć licznik.
Zadanie z sortowaniem punktów - zniknął błąd NZEC ale pojawił się błąd "Błędna odpowiedź". Nie wiem czemu, może się rzuca o format outputu ale to już jakoś sam wpadnę jak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1