Arkusz egzaminacyjny MINP-R0-100-2405:
Zasady oceniania rozwiązań zadań Sprawozdanie: Rozwiązanie: W C ++:
#include <iostream>
using namespace std;
int main() {
long long n; // zmienna wejściowa
cout << "Podaj liczbę: ";
cin >> n;
long long b = 1; // inicjalizacja b
long long c = 0; // inicjalizacja c
int licznik_operacji_c_b = 0; // licznik dla c = c + b
while (n > 0) {
int a = n % 10; // reszta z dzielenia n przez 10 (ostatnia cyfra)
n = n / 10; // iloraz z dzielenia n przez 10 (usuniecie ostatniej cyfry)
if (a % 2 == 0) { // jeżeli cyfra parzysta
c = c + b * (a / 2); // dzielenie cyfry parzystej przez 2
} else { // jeżeli cyfra nieparzysta
c = c + b; // dodawanie 1 do wyniku
licznik_operacji_c_b++; // zliczanie wykonania c = c + b
}
b = b * 10; // zwiększenie wagi dla następnej cyfry
}
cout << "Wynik: " << c << endl;
cout << "Działanie c = c + b wykonano: " << licznik_operacji_c_b << " razy." << endl;
return 0;
}
Python:
n = 33658
num = 0
b = 1
c = 0
while n > 0:
a = n % 10
n = n // 10
if a % 2 == 0:
c = c + b * a // 2
else:
c = c + b
num += 1
b = b * 10
print(num)
print(c)
Javascript:
let n = 33658;
let num = 0;
let b = 1;
let c = 0;
while (n > 0) {
let a = n % 10;
n = Math.floor(n / 10);
if (a % 2 === 0) {
c = c + Math.floor(b * a / 2);
} else {
c = c + b;
num += 1;
}
b = b * 10;
}
console.log(num);
console.log(c); Java: public class Main {
public static void main(String[] args) {
int n = 33658;
int num = 0;
int b = 1;
int c = 0;
while (n > 0) {
int a = n % 10;
n = n / 10;
if (a % 2 == 0) {
c = c + b * a / 2;
} else {
c = c + b;
num++;
}
b = b * 10;
}
System.out.println("Liczba cyfr nieparzystych: " + num);
System.out.println("Nowa wartosc c: " + c);
}
}
VIDEO
Rozwiązanie czat gpt: Wyjaśnienie algorytmu: Zmienna b
jest na początku ustawiona na 1 i służy jako waga (potęga 10) do dodawania wyników do zmiennej c
. Zmienna b
jest mnożona przez 10 w każdej iteracji pętli, aby odpowiadać kolejnym cyfrom liczby od prawej do lewej.
Zmienna c
jest ustawiona na 0 i przechowuje wynik końcowy.
Główna pętla działa, dopóki liczba n
jest większa niż 0. W każdej iteracji pobierana jest ostatnia cyfra liczby n
(przez operację n mod 10
) i następuje jej analiza:
Jeśli cyfra jest parzysta (a mod 2 = 0
), do c
dodawana jest połowa tej cyfry (czyli a div 2
) pomnożona przez aktualną wartość b
. Jeśli cyfra jest nieparzysta, dodawana jest do c
aktualna wartość b
. Na koniec w każdej iteracji wartość n
jest dzielona przez 10 (n div 10
), co oznacza przesunięcie o jedną cyfrę w lewo.
Tabela dla podanych liczb Uzupełnijmy tabelę krok po kroku dla każdej liczby n
:
1. Liczba 33658
Iteracja 1 :a = 8, n = 3365 → parzysta, więc c = c + 1 * (8 div 2) = 0 + 1 * 4 = 4 b = 10 Iteracja 2 :a = 5, n = 336 → nieparzysta, więc c = c + 10 = 4 + 10 = 14 b = 100 Iteracja 3 :a = 6, n = 33 → parzysta, więc c = c + 100 * (6 div 2) = 14 + 100 * 3 = 314 b = 1000 Iteracja 4 :a = 3, n = 3 → nieparzysta, więc c = c + 1000 = 314 + 1000 = 1314 b = 10000 Iteracja 5 :a = 3, n = 0 → nieparzysta, więc c = c + 10000 = 1314 + 10000 = 11314 Wartość c : 11314Liczba wykonań instrukcji c ← c + b
: 3 (została wykonana 3 razy dla cyfr nieparzystych)
2. Liczba 542102
Iteracja 1 :a = 2, n = 54210 → parzysta, więc c = c + 1 * (2 div 2) = 0 + 1 * 1 = 1 b = 10 Iteracja 2 :a = 0, n = 5421 → parzysta, więc c = c + 10 * (0 div 2) = 1 + 0 = 1 b = 100 Iteracja 3 :a = 1, n = 542 → nieparzysta, więc c = c + 100 = 1 + 100 = 101 b = 1000 Iteracja 4 :a = 2, n = 54 → parzysta, więc c = c + 1000 * (2 div 2) = 101 + 1000 = 1101 b = 10000 Iteracja 5 :a = 4, n = 5 → parzysta, więc c = c + 10000 * (4 div 2) = 1101 + 20000 = 21101 b = 100000 Iteracja 6 :a = 5, n = 0 → nieparzysta, więc c = c + 100000 = 21101 + 100000 = 121101 Wartość c : 121101Liczba wykonań instrukcji c ← c + b
: 2
3. Liczba Poprawne rozwiązywanie algorytmu krok po kroku Liczba wejściowa: n = 87654321012345678 n = 87654321012345678 n = 87654321012345678 .
Inicjalizacja: Przetwarzanie cyfr: Cyfra a = 8 a = 8 a = 8 (parzysta):
c = c + b × ( a ÷ 2 ) = 0 + 1 × ( 8 ÷ 2 ) = 0 + 1 × 4 = 4 c = c + b \times (a \div 2) = 0 + 1 \times (8 \div 2) = 0 + 1 \times 4 = 4 c = c + b × ( a ÷ 2 ) = 0 + 1 × ( 8 ÷ 2 ) = 0 + 1 × 4 = 4 b = b × 10 = 10 b = b \times 10 = 10 b = b × 10 = 10 Cyfra a = 7 a = 7 a = 7 (nieparzysta):
c = c + b = 4 + 10 = 14 c = c + b = 4 + 10 = 14 c = c + b = 4 + 10 = 14 (instrukcja c = c + b
) b = b × 10 = 100 b = b \times 10 = 100 b = b × 10 = 100 Cyfra a = 6 a = 6 a = 6 (parzysta):
c = c + b × ( a ÷ 2 ) = 14 + 100 × ( 6 ÷ 2 ) = 14 + 100 × 3 = 314 c = c + b \times (a \div 2) = 14 + 100 \times (6 \div 2) = 14 + 100 \times 3 = 314 c = c + b × ( a ÷ 2 ) = 14 + 100 × ( 6 ÷ 2 ) = 14 + 100 × 3 = 314 b = b × 10 = 1000 b = b \times 10 = 1000 b = b × 10 = 1000 Cyfra a = 5 a = 5 a = 5 (nieparzysta):
c = c + b = 314 + 1000 = 1314 c = c + b = 314 + 1000 = 1314 c = c + b = 314 + 1000 = 1314 (instrukcja c = c + b
) b = b × 10 = 10000 b = b \times 10 = 10000 b = b × 10 = 10000 Cyfra a = 4 a = 4 a = 4 (parzysta):
c = c + b × ( a ÷ 2 ) = 1314 + 10000 × ( 4 ÷ 2 ) = 1314 + 10000 × 2 = 21314 c = c + b \times (a \div 2) = 1314 + 10000 \times (4 \div 2) = 1314 + 10000 \times 2 = 21314 c = c + b × ( a ÷ 2 ) = 1314 + 10000 × ( 4 ÷ 2 ) = 1314 + 10000 × 2 = 21314 b = b × 10 = 100000 b = b \times 10 = 100000 b = b × 10 = 100000 Cyfra a = 3 a = 3 a = 3 (nieparzysta):
c = c + b = 21314 + 100000 = 121314 c = c + b = 21314 + 100000 = 121314 c = c + b = 21314 + 100000 = 121314 (instrukcja c = c + b
) b = b × 10 = 1000000 b = b \times 10 = 1000000 b = b × 10 = 1000000 Cyfra a = 2 a = 2 a = 2 (parzysta):
c = c + b × ( a ÷ 2 ) = 121314 + 1000000 × ( 2 ÷ 2 ) = 121314 + 1000000 = 1121314 c = c + b \times (a \div 2) = 121314 + 1000000 \times (2 \div 2) = 121314 + 1000000 = 1121314 c = c + b × ( a ÷ 2 ) = 121314 + 1000000 × ( 2 ÷ 2 ) = 121314 + 1000000 = 1121314 b = b × 10 = 10000000 b = b \times 10 = 10000000 b = b × 10 = 10000000 Cyfra a = 1 a = 1 a = 1 (nieparzysta):
c = c + b = 1121314 + 10000000 = 11121314 c = c + b = 1121314 + 10000000 = 11121314 c = c + b = 1121314 + 10000000 = 11121314 (instrukcja c = c + b
) b = b × 10 = 100000000 b = b \times 10 = 100000000 b = b × 10 = 100000000 Cyfra a = 0 a = 0 a = 0 (parzysta):
c = c + b × ( 0 ÷ 2 ) = 11121314 + 100000000 × 0 = 11121314 c = c + b \times (0 \div 2) = 11121314 + 100000000 \times 0 = 11121314 c = c + b × ( 0 ÷ 2 ) = 11121314 + 100000000 × 0 = 11121314 b = b × 10 = 1000000000 b = b \times 10 = 1000000000 b = b × 10 = 1000000000 Cyfra a = 1 a = 1 a = 1 (nieparzysta):
c = c + b = 11121314 + 1000000000 = 1011121314 c = c + b = 11121314 + 1000000000 = 1011121314 c = c + b = 11121314 + 1000000000 = 1011121314 (instrukcja c = c + b
) b = b × 10 = 10000000000 b = b \times 10 = 10000000000 b = b × 10 = 10000000000 Cyfra a = 2 a = 2 a = 2 (parzysta):
c = c + b × ( a ÷ 2 ) = 1011121314 + 10000000000 × ( 2 ÷ 2 ) = 1011121314 + 10000000000 = 11011121314 c = c + b \times (a \div 2) = 1011121314 + 10000000000 \times (2 \div 2) = 1011121314 + 10000000000 = 11011121314 c = c + b × ( a ÷ 2 ) = 1011121314 + 10000000000 × ( 2 ÷ 2 ) = 1011121314 + 10000000000 = 11011121314 b = b × 10 = 100000000000 b = b \times 10 = 100000000000 b = b × 10 = 100000000000 Cyfra a = 3 a = 3 a = 3 (nieparzysta):
c = c + b = 11011121314 + 100000000000 = 111011121314 c = c + b = 11011121314 + 100000000000 = 111011121314 c = c + b = 11011121314 + 100000000000 = 111011121314 (instrukcja c = c + b
) b = b × 10 = 1000000000000 b = b \times 10 = 1000000000000 b = b × 10 = 1000000000000 Cyfra a = 4 a = 4 a = 4 (parzysta):
c = c + b × ( a ÷ 2 ) = 111011121314 + 1000000000000 × ( 4 ÷ 2 ) = 111011121314 + 1000000000000 × 2 = 311011121314 c = c + b \times (a \div 2) = 111011121314 + 1000000000000 \times (4 \div 2) = 111011121314 + 1000000000000 \times 2 = 311011121314 b = b × 10 = 10000000000000 b = b \times 10 = 10000000000000 b = b × 10 = 10000000000000 Cyfra a = 5 a = 5 a = 5 (nieparzysta):
c = c + b = 311011121314 + 10000000000000 = 1311011121314 c = c + b = 311011121314 + 10000000000000 = 1311011121314 (instrukcja c = c + b
) b = b × 10 = 100000000000000 b = b \times 10 = 100000000000000 b = b × 10 = 100000000000000 Cyfra a = 6 a = 6 a = 6 (parzysta):
c = c + b × ( a ÷ 2 ) = 1311011121314 + 100000000000000 × ( 6 ÷ 2 ) = 1311011121314 + 100000000000000 × 3 = 31311011121314 c = c + b \times (a \div 2) = 1311011121314 + 100000000000000 \times (6 \div 2) = 1311011121314 + 100000000000000 \times 3 = 31311011121314 b = b × 10 = 1000000000000000 b = b \times 10 = 1000000000000000 b = b × 10 = 1000000000000000 Cyfra a = 7 a = 7 a = 7 (nieparzysta):
c = c + b = 31311011121314 + 1000000000000000 = 1031311011121314 c = c + b = 31311011121314 + 1000000000000000 = 1031311011121314 (instrukcja c = c + b
) b = b × 10 = 10000000000000000 b = b \times 10 = 10000000000000000 b = b × 10 = 10000000000000000 Cyfra a = 8 a = 8 a = 8 (parzysta):
c = c + b × ( a ÷ 2 ) = 1031311011121314 + 10000000000000000 × ( 8 ÷ 2 ) = 1031311011121314 + 10000000000000000 × 4 = 41312111011121314 c = c + b \times (a \div 2) = 1031311011121314 + 10000000000000000 \times (8 \div 2) = 1031311011121314 + 10000000000000000 \times 4 = 41312111011121314 Ostateczny wynik: c = 41312111011121314 c = 41312111011121314 c = 41312111011121314 Liczba wykonanych instrukcji c = c + b
: Instrukcja ta jest wykonywana dla nieparzystych cyfr . W liczbie n = 87654321012345678 n = 87654321012345678 n = 87654321012345678 cyfry nieparzyste to: 7 , 5 , 3 , 1 , 1 , 3 , 5 , 7 7, 5, 3, 1, 1, 3, 5, 7 7 , 5 , 3 , 1 , 1 , 3 , 5 , 7 , co oznacza, że instrukcja c = c + b
jest wykonana 8 razy .