Program działa. SPOJ nie akceptuje. Ktoś wyjaśni czemu?
import java.util.Scanner; public class Main { public static void main(String[] args) { int gwiazdki; do { Scanner odczyt = new Scanner(System.in); gwiazdki = odczyt.nextInt(); if (gwiazdki < 0) { gwiazdki = -gwiazdki; int glewo = gwiazdki; int kprawo = gwiazdki - 1; int gprawo = 1; int klewo = 0; for (int q = 1; q <= gwiazdki; q++) { for (int w = 0; w < klewo; w++) { System.out.print("."); } klewo++; for (int w = 1; w <= glewo; w++) { System.out.print("*"); } glewo--; for (int w = 1; w <= kprawo; w++) { System.out.print("."); } kprawo--; for (int w = 1; w <= gprawo; w++) { System.out.print("*"); } gprawo++; System.out.println(); } klewo--; glewo++; kprawo++; gprawo--; for (int q = 1; q <= gwiazdki; q++) { for (int w = 1; w <= gprawo; w++) { System.out.print("*"); } gprawo--; for (int w = 1; w <= kprawo; w++) { System.out.print("."); } kprawo++; for (int w = 1; w <= glewo; w++) { System.out.print("*"); } glewo++; for (int w = 0; w < klewo; w++) { System.out.print("."); } klewo--; System.out.print("\n"); } System.out.print("\n"); } else if (gwiazdki > 0) { int glewo = 1; int klewo = gwiazdki - 1; int gprawo = gwiazdki; int kprawo = 0; for (int q = 1; q <= gwiazdki; q++) { for (int w = 1; w <= glewo; w++) { System.out.print("*"); } glewo++; for (int w = 1; w <= klewo; w++) { System.out.print("."); } klewo--; for (int w = 1; w <= gprawo; w++) { System.out.print("*"); } gprawo--; for (int w = 0; w < kprawo; w++) { System.out.print("."); } kprawo++; System.out.print("\n"); } glewo--; klewo++; gprawo++; kprawo--; for (int q = 1; q <= gwiazdki; q++) { for (int w = 0; w < kprawo; w++) { System.out.print("."); } kprawo--; for (int w = 1; w <= gprawo; w++) { System.out.print("*"); } gprawo++; for (int w = 1; w <= klewo; w++) { System.out.print("."); } klewo++; for (int w = 1; w <= glewo; w++) { System.out.print("*"); } glewo--; System.out.print("\n"); } System.out.print("\n"); } } while (gwiazdki != 0); // TODO Auto-generated constructor stub } }
import java.util.Scanner;
public class Main {
public static void main(String[] args) { int gwiazdki; do { Scanner odczyt = new Scanner(System.in); gwiazdki = odczyt.nextInt(); if (gwiazdki < 0) { gwiazdki = -gwiazdki; int glewo = gwiazdki; int kprawo = gwiazdki - 1; int gprawo = 1; int klewo = 0; for (int q = 1; q <= gwiazdki; q++) { for (int w = 0; w < klewo; w++) { System.out.print("."); } klewo++; for (int w = 1; w <= glewo; w++) { System.out.print("*"); } glewo--; for (int w = 1; w <= kprawo; w++) { System.out.print("."); } kprawo--; for (int w = 1; w <= gprawo; w++) { System.out.print("*"); } gprawo++; System.out.println(); } klewo--; glewo++; kprawo++; gprawo--; for (int q = 1; q <= gwiazdki; q++) { for (int w = 1; w <= gprawo; w++) { System.out.print("*"); } gprawo--; for (int w = 1; w <= kprawo; w++) { System.out.print("."); } kprawo++; for (int w = 1; w <= glewo; w++) { System.out.print("*"); } glewo++; for (int w = 0; w < klewo; w++) { System.out.print("."); } klewo--; System.out.print("\n"); } System.out.print("\n"); } else if (gwiazdki > 0) { int glewo = 1; int klewo = gwiazdki - 1; int gprawo = gwiazdki; int kprawo = 0; for (int q = 1; q <= gwiazdki; q++) { for (int w = 1; w <= glewo; w++) { System.out.print("*"); } glewo++; for (int w = 1; w <= klewo; w++) { System.out.print("."); } klewo--; for (int w = 1; w <= gprawo; w++) { System.out.print("*"); } gprawo--; for (int w = 0; w < kprawo; w++) { System.out.print("."); } kprawo++; System.out.print("\n"); } glewo--; klewo++; gprawo++; kprawo--; for (int q = 1; q <= gwiazdki; q++) { for (int w = 0; w < kprawo; w++) { System.out.print("."); } kprawo--; for (int w = 1; w <= gprawo; w++) { System.out.print("*"); } gprawo++; for (int w = 1; w <= klewo; w++) { System.out.print("."); } klewo++; for (int w = 1; w <= glewo; w++) { System.out.print("*"); } glewo--; System.out.print("\n"); } System.out.print("\n"); } } while (gwiazdki != 0); // TODO Auto-generated constructor stub }
}
linia:
Scanner odczyt = new Scanner(System.in);
powinna być przed pętlą
ale program w tej postaci (i w jawie) nie wyrobi się w czasie
Gdy kompilowałem ten kod u siebie na komputerze nie było problemu z tą linią.Po zmianie SPOJ zaakceptował mój kod i wyrobiłem się w czasie(pomimo javy).Dzięki za pomoc.
Nie, masz 6 punktów, a poprawnym wynikiem jest 15.
W 1 teście wyszło mi 1.01 s gdy limit byl 1s . W 2 pozostałych udało się.
Spróbuj wyprowadzać całe linie, a nie znak po znaku, to powinno znacznie przyspieszyć (bo wejście/wyjście w jawie jest koszmarnie wolne, wiele zadań nie ma szans na to, aby je zrobić w jawie)
Przekracza to chyba narazie moje możliwości ale dzięki za pomoc