SZUKAJ NA TYM BLOGU

Zadanie 1. Cyfrowe dopełnienie (0–6) ()

Niech n będzie nieujemną liczbą całkowitą, której najbardziej znacząca cyfra w zapisie dziesiętnym jest większa od 0 i mniejsza od 9. Cyfrowym dopełnieniem liczby n nazywamy liczbę całkowitą d, której zapis dziesiętny otrzymujemy z zapisu dziesiętnego liczby n przez zamianę każdej cyfry tego zapisu na cyfrę, która jest jej uzupełnieniem do 9. 

Przykład: 

Cyfrowym dopełnieniem liczby 2021 jest liczba 7978. 

Zadanie 1.1. (0–2) 

Podaj czterocyfrową liczbę n taką, że wartość bezwzględna różnicy liczby n i jej cyfrowego dopełnienia d jest:

a) najmniejsza n = ______________________ 

b) największa n = ______________________ 

Zadanie 1.2. (0–4) 

W postaci pseudokodu lub w wybranym języku programowania napisz algorytm, który dla dodatniej liczby całkowitej n obliczy jej cyfrowe dopełnienie d. O liczbie n wiadomo, że jej najbardziej znacząca cyfra jest większa od 0 i mniejsza od 9. 

Uwaga: Twój algorytm może używać wyłącznie zmiennych przechowujących liczby całkowite oraz może operować wyłącznie na liczbach całkowitych. W zapisie algorytmu możesz korzystać tylko z instrukcji sterujących, operatorów arytmetycznych: dodawania, odejmowania, mnożenia, dzielenia, dzielenia całkowitego i reszty z dzielenia; operatorów logicznych, porównań i instrukcji przypisywania lub samodzielnie napisanych funkcji i procedur wykorzystujących powyższe operacje. Zabronione jest używanie funkcji wbudowanych dostępnych w językach programowania. Nie wolno w szczególności korzystać z żadnych funkcji zamiany z typu znakowego lub napisowego na liczbowy i odwrotnie. 

Specyfikacja:
Dane:
  n – dodatnia liczba całkowita taka, że jej najbardziej znacząca cyfra jest większa od 0 i mniejsza od 9
Wynik:
  d – dodatnia liczba całkowita, cyfrowe dopełnienie liczby n

W pseudokodzie

W C++

Zasady oceniania 1.1

2 pkt – za poprawną odpowiedź.
1 pkt – za poprawną odpowiedź tylko a) ALBO tylko b).
0 pkt – za podanie odpowiedzi niepoprawnej albo brak odpowiedzi. 

Rozwiązanie 1.1

a) 5000 (lub 4999)
b) 8999 (lub 1000)

Poziom wykonania zadania 56%

Zasady oceniania 1.2

4 pkt – za poprawny algorytm, w tym:
 W przypadku rozwiązania w wersji I (pobieranie i modyfikacja kolejnych cyfr liczby):
  1 pkt – za poprawne odwoływanie się (w pętli) do cyfry najmniej znaczącej albo najbardziej znaczącej oraz jej modyfikację (obliczenie jej dopełnienia);
  1 pkt – za poprawną konstrukcję pętli;
  1 pkt – za poprawne instrukcje wyliczające kolejne potęgi 10;
  1 pkt – za otrzymanie poprawnej wartości d.
W przypadku rozwiązania w wersji II (utworzenie liczby złożonej z dziewiątek o liczbie cyfr takiej samej jak liczba cyfr liczby n):
 1 pkt – za poprawne zliczenie liczby cyfr liczby n;
 1 pkt – za poprawną konstrukcję pętli;
 1 pkt – za poprawne tworzenie (w pętli) liczby złożonej z dziewiątek;
 1 pkt – za otrzymanie poprawnej wartości d (odjęcie n od liczby złożonej z dziewiątek).
0 pkt – za odpowiedź błędną lub brak odpowiedzi.
Uwaga: za każde inne niż przedstawione niżej, ale całkowicie poprawne rozwiązanie spełniające warunki zadania przyznajemy maksymalną liczbę punktów. 

Przykładowe rozwiązania 1.2

I wersja

potega ← 1
d ← 0
dopóki n > 0 wykonuj
  cyfra ← n mod 10
  n ← n div 10
  cyfra ← 9 - cyfra
  d ← d + (potega * cyfra)
  potega ← potega * 10 

II wersja (poprawiony błąd powinno być div zamiast / )

suma ← 0
kopia ← n
dopóki kopia > 0 wykonuj
  kopia ← kopia div 10
  suma ← suma * 10 + 9
d ← suma - n

Przykład 1. 

d ← 0
x ← 10
dopóki n > 0 wykonuj
  d ← 9 * x / 10 - n mod x + d
  n ← n - n mod x
  x ← x * 10
wypisz d

Przykład 2.

odjemna ← 9
maga ← 1
dopóki odjemna < n wykonuj
  maga ← maga * 10
  odjemna ← odjemna + 9 * maga
d ← odjemna - n

Poziom wykonania zadania 29%

Przykład 2. w C/C++, Java

int odjemna = 9;
int maga = 1;
while (odjemna < n) {
    maga = maga * 10;
    odjemna = odjemna + 9 * maga;
}
int d = odjemna - n;

Przykład 2. w Python

odjemna = 9
maga = 1
while odjemna < n:
    maga = maga * 10
    odjemna = odjemna + 9 * maga
d = odjemna - n

Przykład 2. w Pascal

odjemna := 9;
maga := 1;
while odjemna < n do
begin
    maga := maga * 10;
    odjemna := odjemna + 9 * maga;
end;
d := odjemna - n;

Na podstawie:

https://cke.gov.pl/images/_EGZAMIN_MATURALNY_OD_2015/Arkusze_egzaminacyjne/2021/Informatyka/poziom_rozszerzony/EINP-R1-100-2105.pdf

https://cke.gov.pl/images/_EGZAMIN_MATURALNY_OD_2015/Arkusze_egzaminacyjne/2021/Zasady_Oceniania/EINP-R1_R2-100-2105-zasady.pdf

https://cke.gov.pl/images/_EGZAMIN_MATURALNY_OD_2015/Informacje_o_wynikach/2021/sprawozdanie/EM_informatyka_sprawozdanie_2021.pdf