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

spoj JPESEL - Pesel

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
740 wizyt
pytanie zadane 1 sierpnia 2022 w Java przez Ada3141592654 Początkujący (270 p.)
Hej,

Czy w tym zadaniu mam użyć Scannera, żeby wczytywać z klawiatury numery pesel? Z zadania wynika, ze moze byc ich 100, więc jest to chyba mało wydajne rozwiązanie. Myślałam jeszcze nad klasą Random, ale nie losowałyby się numery z zerem na początku. Lepiej więc użyć Scannera czy stworzyć własny generator, który ma 10 cyfr i tworzy z nich 11 cyfrowe liczby?

https://pl.spoj.com/problems/JPESEL/

1 odpowiedź

0 głosów
odpowiedź 1 sierpnia 2022 przez Wiciorny Ekspert (278,710 p.)
I tak i nie, często Scanner bedzie dawał błędy w testach - z racji wydajności, więc ostatecznie nie przejdzie.
https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html
BufferedReader jest rozwiązaniem albo Buffered Stream

Spokojnie możesz napisać Scannerem a potem sprawdzić czy przejdzie testy.
komentarz 4 sierpnia 2022 przez Ada3141592654 Początkujący (270 p.)
edycja 4 sierpnia 2022 przez Ada3141592654

Ogólnie jednak rozwiązałam to zadanie z generatorem liczb 11 cyfrowych, użyłam BufferedReadera tylko, zeby wczytac liczbe testów. Mam poprawne wyniki lokalnie, ale spoj nie akceptuje mojego rozwiazania. Mógłbyś zerknąć na kod i powiedzieć czego to może być przyczyna?

import java.io.IOException;
import java.util.List;
import java.util.Random;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Pesel {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int t = scanner.nextInt();
        for(int c=0; c<t; c++) {
            char[] pes = generatePesel().toCharArray();
            int[] array = new int[pes.length];
            for (int i = 0; i < array.length; i++) {
                array[i] = Integer.parseInt(String.valueOf(pes[i]));
                System.out.print(array[i]);
            }
            System.out.println();
            int sum = 0;
            int sum1 = 0;
            int n = 1;
            int l = 7;
            for (int i = 0; i < 2; i++) {
                for (int j = i; j < array.length; j += 4) {
                    sum += array[j] * n;
                }
                n += 2;
            }
            for (int i = 2; i < 4; i++) {
                for (int j = i; j < 8; j += 4) {
                    sum1 += array[j] * l;
                }
                l += 2;
            }
            int res = array[10] + sum1 + sum;
            if(res>0) {
                if(res%10==0) {
                    System.out.println("D");
                } else {
                    System.out.println("N");
                }
            }
        }
    }
    private static String generatePesel() {
        Random random = new Random();
        List<String> possibleIntegers = List.of("0", "1", "2", "3" , "4", "5", "6", "7", "8", "9");
        StringBuilder pesel = new StringBuilder();
        while(pesel.length()<11) {
            pesel.append(possibleIntegers.get(random.nextInt(possibleIntegers.size())));
        }
        return pesel.toString();
    }
}

 

komentarz 6 sierpnia 2022 przez Ada3141592654 Początkujący (270 p.)
Napisałam to jednak BufferedReaderem i przeszło!

Podobne pytania

0 głosów
1 odpowiedź 839 wizyt
pytanie zadane 25 lipca 2018 w SPOJ przez Deriquest Użytkownik (550 p.)
0 głosów
1 odpowiedź 707 wizyt
pytanie zadane 31 maja 2020 w SPOJ przez Dynamic Bywalec (2,910 p.)
0 głosów
1 odpowiedź 217 wizyt
pytanie zadane 17 sierpnia 2017 w C i C++ przez sohu Nowicjusz (200 p.)

93,182 zapytań

142,196 odpowiedzi

322,002 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1785p. - Michal Drewniak
  9. 1744p. - rafalszastok
  10. 1724p. - Adrian Wieprzkowicz
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1365p. - Dawid128
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...