Grade 9 · Digits of a numberCitește în română
Printing the digits in their order in the number
Original: Afișarea cifrelor în ordinea din număr
The idea
With n % 10 the digits come out from right to left. To print them from left to right, we first compute p = the largest power of 10 not greater than n. Then the current digit is n / p % 10, and p is divided by 10 at every step.
Original description (Romanian)
Cu n % 10 cifrele ies de la dreapta la stânga. Ca să le afișăm de la stânga la dreapta, calculăm întâi p = cea mai mare putere a lui 10 cel mult egală cu n. Apoi cifra curentă este n / p % 10, iar p scade de 10 ori la fiecare pas.
- Complexity
- O(k), where k is the number of digits of n
- Grade
- Grade 9 (Clasa a IX-a)
- Chapter
- Digits of a number
Examples
Input
4072
Expected output
4 0 7 2
The code
Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.
/*
* Titlu: Afișarea cifrelor în ordinea din număr
* Clasa: 9
* Capitol: Cifrele unui număr
* Descriere: Cu n % 10 cifrele ies de la dreapta la stânga. Ca să le afișăm de
* la stânga la dreapta, calculăm întâi p = cea mai mare putere a lui
* 10 cel mult egală cu n. Apoi cifra curentă este n / p % 10, iar p
* scade de 10 ori la fiecare pas.
* Complexitate: O(k), unde k este numărul de cifre ale lui n
*
* Exemplu
* Intrare: 4072
* Ieșire: 4 0 7 2
*/
#include <iostream>
using namespace std;
int main()
{
long long n, p = 1;
cin >> n;
while (p * 10 <= n)
{
p = p * 10;
}
while (p > 0)
{
cout << n / p % 10 << ' ';
p = p / 10;
}
cout << '\n';
return 0;
}
Runs on a real g++ (C++17, -O2) through Compiler Explorer. Keep runs short; there's a time limit.