Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.
Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.
Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
Cifra de control a unui număr este cifra care se obține efectuând suma cifrelor sale, după care suma acestei sume, după care suma acestei noi sume, și așa mai departe până când se obține un număr format dintr-o singură cifră.
Spre exemplu, pentru numărul 8538654
, cifra de control este 3
, obținută astfel: 8538654
(suma cifrelor este 39
) -> 39
(suma cifrelor este 12
) -> 12
(suma cifrelor este 3
) -> 3
(ne oprim).
Pentru a determina cifra de control a unui număr, putem pur și simplu să aplicăm algoritmul de mai sus (presupunem că numărul inițial este n
):
int n = 8538654;
while(n > 9) { //Cât timp nu este cifră
int sumcif = 0; //Calculăm suma cifrelor lui n
do {
int u = n % 10;
sumcif += u;
n /= 10;
} while(n != 0);
n = sumcif; //Atribuim lui n suma cifrelor sale
}
cout << n << "\n"; //3
Timpul de execuție al codului este dependent de cifrele ale lui n
: dacă sunt mai multe cifre, sau sunt cifre mai mari, timpul crește (însă nu semnificativ).
Mai există încă o modalitate de a afla cifra de control a unui număr. Vom calcula restul împărțirii numărului nostru la 9
. Dacă restul este egal cu 0
(adică numărul se împarte la 9
), atunci cifra de control a numărului este 9
. În caz contrar, cifra de control este restul. Iată codul:
int n = 8538654, cifraDeControl;
if(n % 9 == 0) {
cifraDeControl = 9;
} else {
cifraDeControl = n % 9;
}
cout << cifraDeControl << "\n"; //3
Cifra de control este des utilizată în criptografie sau în validarea datelor, însă, de multe ori, poate să aibă altă definiție decât cea prezentată mai sus. Spre exemplu, a 13-a cifră din Codul Numeric Personal reprezintă o cifră de control, care asigură validitatea codului (de pildă, în cazul în care cineva își modifică CNP-ul pentru a părea că are altă vârstă), însă formula este un pic diferită față de cea menționată mai sus.
Completează următoarele secvențe de cod:
Să se verifice dacă numărul natural n
se divide sau nu cu cifra de control:
int n, cifraDeControl;
cin >> n;
cifraDeControl = n;
while(cifraDeControl > 9) {
int sumcif = 0;
do {
int u = cifraDeControl % ???;
sumcif += u;
cifraDeControl /= 10;
} while(cifraDeControl != 0);
cifraDeControl = sumcif;
}
if(n % cifraDeControl == ???) {
cout << n << " se divide cu " << cifraDeControl << "\n";
} else {
cout << n << " nu se divide cu " << cifraDeControl << "\n";
}
Se dă o cifră. Afișați un număr care are ca cifră de control cifra dată:
int cif;
cin >> cif;
for(int i = 1; i <= ???; ++i) {
cout << "1";
}
# | Problemă | Dificultate |
---|---|---|
27. | Cifra de control | Medie (4 |