Grade 9 · Number basesCitește în română
Converting to base 10 using powers of the base
Original: Conversia în baza 10 cu puterile bazei
The idea
The version for b <= 10, when the number can be read as an integer: its digits are extracted from the right with n % 10, and every digit is multiplied by the matching power of the base (1, b, b², ...). 1101 in base 2 = 1·1 + 0·2 + 1·4 + 1·8 = 13.
Original description (Romanian)
Varianta pentru b <= 10, când numărul se poate citi ca întreg: cifrele lui se extrag de la dreapta cu n % 10, iar fiecare cifră se înmulțește cu puterea corespunzătoare a bazei (1, b, b², ...). 1101 în baza 2 = 1·1 + 0·2 + 1·4 + 1·8 = 13.
- Complexity
- O(k), where k is the number of digits
- Grade
- Grade 9 (Clasa a IX-a)
- Chapter
- Number bases
Examples
Input
1101 2
Expected output
13
Input
207 8
Expected output
135
The code
Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.
/*
* Titlu: Conversia în baza 10 cu puterile bazei
* Clasa: 9
* Capitol: Baze de numerație
* Descriere: Varianta pentru b <= 10, când numărul se poate citi ca întreg:
* cifrele lui se extrag de la dreapta cu n % 10, iar fiecare cifră
* se înmulțește cu puterea corespunzătoare a bazei (1, b, b², ...).
* 1101 în baza 2 = 1·1 + 0·2 + 1·4 + 1·8 = 13.
* Complexitate: O(k), unde k este numărul de cifre
*
* Exemplu
* Intrare: 1101 2
* Ieșire: 13
*
* Exemplu
* Intrare: 207 8
* Ieșire: 135
*/
#include <iostream>
using namespace std;
int main()
{
long long n, rez = 0, p = 1;
int b;
cin >> n >> b;
while (n > 0)
{
rez = rez + n % 10 * p;
p = p * b;
n = n / 10;
}
cout << rez << '\n';
return 0;
}
Runs on a real g++ (C++17, -O2) through Compiler Explorer. Keep runs short; there's a time limit.