5 / 9
May 2019

Witam może ktoś pomoże mi z kodem nie wiem dlaczego nie chce mi go zaliczyć będę wdzięczny za pomoc

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
int d;
Scanner scanner = new Scanner(System.in);
d = scanner.nextInt();

    for (int i = 0; i < d; i++) {
        int n = scanner.nextInt();
        System.out.println(silnia(n) % 100 / 10 + " " + silnia(n) % 10);
    }

}

public static int silnia(int n) {
    if (n == 0)
        return 1;
    else if (n == 1)
        return 1;
    else
        return n * silnia(n - 1);
}

}

  • created

    May '19
  • last reply

    May '19
  • 8

    replies

  • 1.1k

    views

  • 3

    users

  • 2

    links

Pomyśl jak będzie wyglądała praca Twojego programu dla n=10000

Dzięki wielkie za odpowiedzi wiem do czego zmierzasz i jak będzie wyglądał efekt tego sprawdzenia z tym że skoro w treści zadania jest “Twój program powinien wypisać w osobnej linii dokładnie dwie cyfry (oddzielone pojedynczą spacją): cyfrę dziesiątek i cyfrę jedności liczby n! zapisanej w systemie dziesiętnym.”. Czy w takim razie liczy wykraczające poza zakres części dziesiętnych także musi zostać wyświetlona ? I jeżeli tak w jaki formacie np dla 5! “1 2 0” ?

Jednak chyba nie zrozumiałeś mojej podpowiedzi. Napiszę tak - żeby Twój program mógł wyznaczyć dwie ostatnie cyfry 1000! to musi 1000! najpierw policzyć. Wydedukuj sobie resztę. Pomocne może być poczytanie o typie int.

Ziomeczku, kolega korkirw dobrze ci radzi żebyś poczytał o typie int i innych typach podstawowych, wtedy wyniesiesz wiele z nauki w tym serwisie, a chyba o to właśnie chodzi :wink:
Podpowiem ci, że nie do końca zrozumiałeś treść zadania. Ty nie masz liczyć silni z każdego podanego inputu tylko wyświetlić dwie ostatnie cyfry. Przeczytaj o tych intach o których wspomniał kolega i powinieneś zaczaić o co chodzi, a jeśli temat jest dalej nie jasny to pytaj :wink:
A i jeszcze jedno, ta linijka:

System.out.println(silnia(n) % 100 / 10 + " " + silnia(n) % 10);

Sprawia, że dla jednego outputu liczysz dwa razy to samo, a to oznacza marnowanie mocy obliczeniowej oraz w przypadku spoja zadanie może być niezaliczone poprzez przekroczenie czasu :wink:

Taka ogólna, kolejna podpowiedź, dotycząca filozofii podejścia do rozwiązania tego zadania.
Nie trzeba kupować restauracji żeby zjeść obiad.

Dzięki za wasz podpowiedzi dziś miałem trochę czasu i ponownie podeszłe do zadania z pozytywnym rezultatem. Rzeczywiści w tym zadania nie do końca chodziło o wyliczenie samej wartości silni i to mnie zmyliło ale po rozpisaniu i sprawdzeniu kilku wartości w excelu znalazłem zależność o którą chodziło w zadaniu. Jeszcze raz dzięki.

Gratuluję i mam nadzieję, że wyniosłeś z zadania najważniejsze czyli wiedzę o podstawowych typach danych i ich pojemności :wink: