Potęgowanie - niepoprawne rozwiązanie

0

Zadanko ze SPOJA: http://pl.spoj.com/problems/PA05_POT/

Czy ktoś może wie dlaczego SPOJ wyrzuca mi, że rozwiązanie jest błędne?
U mnie wyniki w NetBeans po wprowadzeniu danych wychodzą prawidłowe.

import java.util.Scanner;
import java.awt.*;

public class JavaApplication7 {
    
    public static void main(String[] args) {
        Scanner odczyt = new Scanner(System.in);
        
        int D,a,b;
        D = odczyt.nextInt();
        double[] tablica = new double[D];
        
        for (int i=0; i<D; i++){
           a = odczyt.nextInt();
           b = odczyt.nextInt();
           tablica[i] = Math.round(Math.pow(a,b)%10);
        }
    for (int i=0; i<D; i++){
        System.out.println(Math.round(tablica[i]));
    }   
    }
}
1

Chyba uciekł Ci nawias.

  System.out.println(Math.round(tablica[i]) + "\n";
3

W tym zadaniu nie musisz liczyć potęgi.

2

Ostatnia linijka kodu jest nieprawidłowa.

Poprawna wersja:
http://ideone.com/utWPIz

Polecam używanie Ideone.com do testowania takiego kodu.

1

Podpowiedź: Tym sposobem nawet w C++ na strumieniach C nie przejdzie ci czasowo ;) Napisz sobie na kartce te potęgi.

0

Tak, zgubiłam tam nawias, ale z rozpędu, nawet z taką linijką:

System.out.println(Math.round(tablica[i]) + "\n");

lub:

System.out.println(Math.round(tablica[i]));

Wyrzuca mi błędną odpowiedź.
Hmm... zapewne nie przejdzie mi czasowo ale na początku chciałabym w ogóle mieć poprawne rozwiązanie :P. Na SPOJu mogę dać na wejściu przykładowe dane, czy muszę korzystać z poleceń typu NextInt() itd.?

1

Nie możesz na sztywno wpisać danych.

0

Ok. A czy ktoś mógłby odpalić ten program u siebie i zdiagnozować, dlaczego wyrzuca mi "błędna odpowiedź"?

2

W ogóle to po co te dane wczytujesz do tablicy?
Na SPOJu jest rozdzielone wejście i wyjście, więc nie potrzebujesz jej tutaj.

1

Innymy słowy możesz wczytać pierwszą liczbe, zwrócić wynik i wczytać następną, zwrócić wynik itd.

1

Dwie liczby naturalne a i b potęgujesz za pomocą funkcji, która jako argument przyjmuje double i zwraca double, które następnie zaokrąglasz do inta - pytanie czy przy dużych liczbach dokładność double jest wystarczająca do zapisania dokładnego wyniku. Poza tym, żaden typ podstawowy w java nie zmieści wyniku potęgowania 1 000 000 000 ^ 1 000 000 000 a taki jest zakres liczb a i b w tym zadaniu. Twój sposób podejścia do rozwiązania jest z góry skazany na niepowodzenie i szkoda czasu na szukanie powodu dlaczego nie działa. W tym konkretnym zadaniu w ogóle nie trzeba (a nawet nie wolno) potęgować.

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