
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Check If a Number Starts with 1 in a Given Base in C++
We have a number N and a base b. In this program we have to check whether the number is starting with 1 in base b or not. Suppose a number 6 is given. In binary this is 110, so it starts with 1, in base 4 also it will be 124. Here also it starts with 1.
As we know, if a number N is represented in base b, b gets converted to m+1 bit sequence bm bm-1 … b0. This implies bm bm + bm-1 * bm-1 + … + b0*b0 = N. The largest number will be 2*bm – 1. The N lies in bm ≤ N ≤ 2*bm – 1. Now another thing to notice is that m cannot exceed $\lfloor\log_2 m\;\rfloor$ this is because when we represent any number in base-2 it gets converted into a sequence of only 0s and 1s, so the length of this sequence will always be greater than any other base representation and its length will be equal to$\lfloor\log_2 m\;\rfloor+1$ . So to check for a given number N starts with 1 in base b or not we will traverse from m = 1 to m =$\lfloor\log_2 m\;\rfloor$ and check whether for any value of m, N lies in the range bm ≤ N ≤ 2*bm – 1 or not and accordingly return True or false.
Example
#include <iostream> #include <cmath> using namespace std; bool isStartWithOne(int number, int base) { int m = log2(number); for (int i = 1; i <= m; i++) { if (number >= pow(base, i) && number <= 2 * pow(base, i) - 1) //if number is in the given range return true; } return false; } int main() { int num = 19, base = 16; if(isStartWithOne(num, base)){ cout << "Can be represented"; }else{ cout << "Can not be represented"; } }
Output
Can be represented