Clasa a IX-a · Cifrele unui numărRead in English
Cifra de control în C++
În engleză: Check digit (digital root)
Ideea
Cifra de control se obține înlocuind numărul cu suma cifrelor lui, în mod repetat, până când rămâne o singură cifră (de exemplu 99999 -> 45 -> 9). Același rezultat dă formula 1 + (n - 1) % 9, pentru n > 0.
Descrierea în engleză
The check digit is obtained by repeatedly replacing the number with the sum of its digits until a single digit remains (for example 99999 -> 45 -> 9). The formula 1 + (n - 1) % 9 gives the same result for n > 0.
- Complexitate
- O(k), unde k este numărul de cifre ale lui n (după prima sumă rămân foarte puține cifre)
- Clasa
- Clasa a IX-a (Grade 9)
- Capitol
- Cifrele unui număr
Exemple
Intrare
99999
Ieșire așteptată
9
Intrare
1234
Ieșire așteptată
1
Codul C++
Codul complet, cu comentarii în română. Îl poți modifica liber și îl poți reseta oricând.
/*
* Titlu: Cifra de control
* Clasa: 9
* Capitol: Cifrele unui număr
* Descriere: Cifra de control se obține înlocuind numărul cu suma cifrelor lui,
* în mod repetat, până când rămâne o singură cifră
* (de exemplu 99999 -> 45 -> 9). Același rezultat dă formula
* 1 + (n - 1) % 9, pentru n > 0.
* Complexitate: O(k), unde k este numărul de cifre ale lui n (după prima sumă
* rămân foarte puține cifre)
*
* Exemplu
* Intrare: 99999
* Ieșire: 9
*
* Exemplu
* Intrare: 1234
* Ieșire: 1
*/
#include <iostream>
using namespace std;
int main()
{
long long n;
cin >> n;
while (n >= 10)
{
long long suma = 0;
while (n > 0)
{
suma = suma + n % 10;
n = n / 10;
}
n = suma;
}
cout << n << '\n';
return 0;
}
Rulează pe un g++ adevărat (C++17, -O2) prin Compiler Explorer. Programele trebuie să se termine repede: există o limită de timp.