Check whether a number has consecutive 0's in the given base or not
Last Updated :
05 May, 2025
Given a decimal number N, the task is to check if a number has consecutive zeroes or not after converting the number to its K-based notation.
Examples:
Input: N = 4, K = 2
Output: No
4 in base 2 is 100, As there are consecutive 2 thus the answer is No.
Input: N = 15, K = 8
Output: Yes
15 in base 8 is 17, As there are no consecutive 0 so the answer is Yes.
Approach: First convert the number N into base K and then simply check if the number has consecutive zeroes or not.
Below is the implementation of the above approach:
C++
// C++ implementation of the above approach
#include<bits/stdc++.h>
using namespace std;
// Function to convert N into base K
int toK(int N, int K)
{
// Weight of each digit
int w = 1;
int s = 0;
while (N != 0)
{
int r = N % K;
N = N/K;
s = r * w + s;
w *= 10;
}
return s;
}
// Function to check for consecutive 0
bool check(int N)
{
// Flag to check if there are consecutive
// zero or not
bool fl = false;
while (N != 0)
{
int r = N % 10;
N = N/10;
// If there are two consecutive zero
// then returning False
if (fl == true and r == 0)
return false;
if (r > 0)
{
fl = false;
continue;
}
fl = true;
}
return true;
}
// We first convert to given base, then
// check if the converted number has two
// consecutive 0s or not
void hasConsecutiveZeroes(int N, int K)
{
int z = toK(N, K);
if (check(z))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
// Driver code
int main()
{
int N = 15;
int K = 8;
hasConsecutiveZeroes(N, K);
}
// This code is contributed by
// Surendra_Gangwar
Java
// Java implementation of the above approach
import java.util.*;
class GFG
{
// Function to convert N into base K
static int toK(int N, int K)
{
// Weight of each digit
int w = 1;
int s = 0;
while (N != 0)
{
int r = N % K;
N = N / K;
s = r * w + s;
w *= 10;
}
return s;
}
// Function to check for consecutive 0
static boolean check(int N)
{
// Flag to check if there are consecutive
// zero or not
boolean fl = false;
while (N != 0)
{
int r = N % 10;
N = N / 10;
// If there are two consecutive zero
// then returning False
if (fl == true && r == 0)
return false;
if (r > 0)
{
fl = false;
continue;
}
fl = true;
}
return true;
}
// We first convert to given base, then
// check if the converted number has two
// consecutive 0s or not
static void hasConsecutiveZeroes(int N, int K)
{
int z = toK(N, K);
if (check(z))
System.out.println("Yes");
else
System.out.println("No");
}
// Driver code
public static void main(String[] args)
{
int N = 15;
int K = 8;
hasConsecutiveZeroes(N, K);
}
}
// This code is contributed by Princi Singh
Python
# Python implementation of the above approach
# We first convert to given base, then
# check if the converted number has two
# consecutive 0s or not
def hasConsecutiveZeroes(N, K):
z = toK(N, K)
if (check(z)):
print("Yes")
else:
print("No")
# Function to convert N into base K
def toK(N, K):
# Weight of each digit
w = 1
s = 0
while (N != 0):
r = N % K
N = N//K
s = r * w + s
w* = 10
return s
# Function to check for consecutive 0
def check(N):
# Flag to check if there are consecutive
# zero or not
fl = False
while (N != 0):
r = N % 10
N = N//10
# If there are two consecutive zero
# then returning False
if (fl == True and r == 0):
return False
if (r > 0):
fl = False
continue
fl = True
return True
# Driver code
N, K = 15, 8
hasConsecutiveZeroes(N, K)
C#
// C# implementation of the above approach
using System;
class GFG
{
// Function to convert N into base K
static int toK(int N, int K)
{
// Weight of each digit
int w = 1;
int s = 0;
while (N != 0)
{
int r = N % K;
N = N / K;
s = r * w + s;
w *= 10;
}
return s;
}
// Function to check for consecutive 0
static Boolean check(int N)
{
// Flag to check if there are consecutive
// zero or not
Boolean fl = false;
while (N != 0)
{
int r = N % 10;
N = N / 10;
// If there are two consecutive zero
// then returning False
if (fl == true && r == 0)
return false;
if (r > 0)
{
fl = false;
continue;
}
fl = true;
}
return true;
}
// We first convert to given base, then
// check if the converted number has two
// consecutive 0s or not
static void hasConsecutiveZeroes(int N, int K)
{
int z = toK(N, K);
if (check(z))
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
// Driver code
public static void Main(String[] args)
{
int N = 15;
int K = 8;
hasConsecutiveZeroes(N, K);
}
}
// This code is contributed by 29AjayKumar
JavaScript
<script>
// Javascript implementation of the above approach
// Function to convert N into base K
function toK(N, K)
{
// Weight of each digit
let w = 1;
let s = 0;
while (N != 0)
{
let r = N % K;
N = parseInt(N / K);
s = r * w + s;
w *= 10;
}
return s;
}
// Function to check for consecutive 0
function check(N)
{
// Flag to check if there are consecutive
// zero or not
let fl = false;
while (N != 0)
{
let r = N % 10;
N = parseInt(N/10);
// If there are two consecutive zero
// then returning False
if (fl == true && r == 0)
return false;
if (r > 0)
{
fl = false;
continue;
}
fl = true;
}
return true;
}
// We first convert to given base, then
// check if the converted number has two
// consecutive 0s or not
function hasConsecutiveZeroes(N, K)
{
let z = toK(N, K);
if (check(z))
document.write("Yes");
else
document.write("No");
}
// Driver code
let N = 15;
let K = 8;
hasConsecutiveZeroes(N, K);
// This code is contributed by souravmahato348
</script>
PHP
<?php
// PHP implementation of the above approach
// We first convert to given base,
// then check if the converted number
// has two consecutive 0s or not
function hasConsecutiveZeroes($N, $K)
{
$z = toK($N, $K);
if (check($z))
print("Yes");
else
print("No");
}
// Function to convert N into base K
function toK($N, $K)
{
// Weight of each digit
$w = 1;
$s = 0;
while ($N != 0)
{
$r = $N % $K;
$N = (int)($N / $K);
$s = $r * $w + $s;
$w *= 10;
}
return $s;
}
// Function to check for consecutive 0
function check($N)
{
// Flag to check if there are
// consecutive zero or not
$fl = false;
while ($N != 0)
{
$r = $N % 10;
$N = (int)($N / 10);
// If there are two consecutive
// zero then returning false
if ($fl == true and $r == 0)
return false;
if ($r > 0)
{
$fl = false;
continue;
}
$fl = true;
}
return true;
}
// Driver code
$N = 15;
$K = 8;
hasConsecutiveZeroes($N, $K);
// This code is contributed by mits
?>
Time Complexity:O(logkn + log10n), where n and k represents the value of the given integers.
Auxiliary Space: O(1), no extra space is required, so it is a constant.
Approach: 2
Here is another approach to solve the same problem:
- Start with the given number N and initialize a variable called count to 0.
- Convert N to base K by continuously dividing N by K and appending the remainder to the right of the result until N becomes 0. Let's call the result of this conversion s.
- Traverse through the string s and check each character. If the character is '0', increment count by 1. If the character is not '0', reset count to 0.
- If count becomes 2 or more during the traversal, then the number N has consecutive 0s in base K. Otherwise, it does not.
Here is the code of above approach:
C++
#include <iostream>
#include <string>
using namespace std;
bool hasConsecutiveZeroes(int N, int K) {
// Convert N to base K
string s = "";
while (N > 0) {
s = to_string(N % K) + s;
N /= K;
}
// Traverse through the converted string and check for consecutive 0s
int count = 0;
for (char c : s) {
if (c == '0') {
count++;
if (count >= 2) {
return false;
}
} else {
count = 0;
}
}
return true;
}
int main() {
int N = 15;
int K = 8;
if (hasConsecutiveZeroes(N, K)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
Java
import java.util.*;
public class Main {
static boolean hasConsecutiveZeroes(int N, int K) {
// Convert N to base K
String s = "";
while (N > 0) {
s = Integer.toString(N % K) + s;
N /= K;
}
// Traverse through the converted string and check for consecutive 0s
int count = 0;
for (char c : s.toCharArray()) {
if (c == '0') {
count++;
if (count >= 2) {
return false;
}
} else {
count = 0;
}
}
return true;
}
public static void main(String[] args) {
int N = 15;
int K = 8;
if (hasConsecutiveZeroes(N, K)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
Python
def hasConsecutiveZeroes(N, K):
# Convert N to base K
s = ""
while N > 0:
s = str(N % K) + s
N //= K
# Traverse through the converted string and check for consecutive 0s
count = 0
for c in s:
if c == '0':
count += 1
if count >= 2:
return False
else:
count = 0
return True
N = 15
K = 8
if hasConsecutiveZeroes(N, K):
print("Yes")
else:
print("No")
C#
using System;
public class ConsecutiveZeroesCheck
{
public static bool HasConsecutiveZeroes(int N, int K)
{
// Convert N to base K
string s = "";
while (N > 0)
{
s = (N % K).ToString() + s;
N /= K;
}
// Traverse through the converted string and check for consecutive 0s
int count = 0;
foreach (char c in s)
{
if (c == '0')
{
count++;
if (count >= 2)
{
return false;
}
}
else
{
count = 0;
}
}
return true;
}
public static void Main(string[] args)
{
int N = 15;
int K = 8;
if (HasConsecutiveZeroes(N, K))
{
Console.WriteLine("Yes");
}
else
{
Console.WriteLine("No");
}
}
}
JavaScript
/**
* This function checks if the number N in base K has consecutive 0s.
*
* @param n The number to check.
* @param k The base to convert N to.
*
* @returns True if N in base K has consecutive 0s, False otherwise.
*/
function hasConsecutiveZeroes(n, k) {
// Convert N to base K.
// The variable `s` will store the converted string.
let s = "";
while (n > 0) {
// Append the remainder of N divided by K to the string `s`.
s += String(n % k);
// Get the quotient of N divided by K.
n = Math.floor(n / k);
}
// Traverse through the converted string and check for consecutive 0s.
// The variable `count` will keep track of the number of consecutive 0s.
let count = 0;
for (const c of s) {
// If the current character is a 0, increment `count`.
if (c === "0") {
count++;
} else {
// If the current character is not a 0, reset `count` to 0.
count = 0;
}
// If `count` is greater than or equal to 2, return False.
if (count >= 2) {
return false;
}
}
// If `count` is less than 2, return True.
return true;
}
/**
* This is the main entry point of the program.
*
* It takes two integers N and K as input and prints "Yes" if N in base K has consecutive 0s,
* and "No" otherwise.
*/
const n = 15;
const k = 8;
if (hasConsecutiveZeroes(n, k)) {
console.log("Yes");
} else {
console.log("No");
}
Time Complexity: O(logN + length of the string).
Auxiliary Space: O(logN) , because it also requires storing the converted number as a string.
Similar Reads
Check whether the binary equivalent of a number ends with "001" or not Given a positive integer N, the task is to check whether the binary equivalent of that integer ends with "001" or not. Print "Yes" if it ends in "001". Otherwise, Print "No". Examples : Input: N = 9 Output: Yes Explanation Binary of 9 = 1001, which ends with 001 Input: N = 5 Output: No Binary of 5 =
12 min read
Check whether the binary equivalent of a number ends with "001" or not Given a positive integer N, the task is to check whether the binary equivalent of that integer ends with "001" or not. Print "Yes" if it ends in "001". Otherwise, Print "No". Examples : Input: N = 9 Output: Yes Explanation Binary of 9 = 1001, which ends with 001 Input: N = 5 Output: No Binary of 5 =
12 min read
Check whether the binary equivalent of a number ends with "001" or not Given a positive integer N, the task is to check whether the binary equivalent of that integer ends with "001" or not. Print "Yes" if it ends in "001". Otherwise, Print "No". Examples : Input: N = 9 Output: Yes Explanation Binary of 9 = 1001, which ends with 001 Input: N = 5 Output: No Binary of 5 =
12 min read
Check if a number is in given base or not Given a number as a string and a base, check if the given number is in the given base or not. Examples: Input : str = "1010", base = 2 Output : Yes Input : str = "1015", base = 2 Output : No Input : str = "AF87", base = 16 Output : Yes The idea is to one by one check if all digits are in the given b
10 min read
Check whether the number has only first and last bits set | Set 2 Given a positive integer n, check whether only the first and last bits are set in the binary representation of n. Print 'Yes' or 'No'.Examples: Input: 9 Output: Yes (9)10 = (1001)2, only the first and last bits are set. Input: 15 Output: No (15)10 = (1111)2, except first and last there are other bit
4 min read
Check if bits of a number has count of consecutive set bits in increasing order Given a integer n > 0, the task is to find whether in the bit pattern of integer count of continuous 1's are in increasing from left to right. Examples : Input:19 Output:Yes Explanation: Bit-pattern of 19 = 10011, Counts of continuous 1's from left to right are 1, 2 which are in increasing order.
11 min read