Javascript Program to Count rotations divisible by 8
Last Updated :
23 Sep, 2024
Given a large positive number as string, count all rotations of the given number which are divisible by 8.
Examples:
Input: 8
Output: 1
Input: 40
Output: 1
Rotation: 40 is divisible by 8
04 is not divisible by 8
Input : 13502
Output : 0
No rotation is divisible by 8
Input : 43262488612
Output : 4
Approach:
It is difficult to rotate and divide each number by 8 for large numbers. Therefore, the "divisibility by 8" property says that a number is divisible by 8 if the last 3 digits of the number is divisible by 8. Here we do not rotate the number and check the last 8 digits for divisibility, instead, we count consecutive sequences of 3 digits (in a circular way) which are divisible by 8.
Illustration:
Consider a number 928160
Its rotations are 928160, 092816, 609281,
160928, 816092, 281609.
Now form consecutive sequence of 3-digits from
the original number 928160 as mentioned in the
approach.
3-digit: (9, 2, 8), (2, 8, 1), (8, 1, 6),
(1, 6, 0),(6, 0, 9), (0, 9, 2)
We can observe that the 3-digit number formed by
the these sets, i.e., 928, 281, 816, 160, 609, 092,
are present in the last 3 digits of some rotation.
Thus, checking divisibility of these 3-digit numbers
gives the required number of rotations.
JavaScript
// Javascript program to count all
// rotations divisible by 8
// Function to count of all
// rotations divisible by 8
function countRotationsDivBy8(n) {
let len = n.length;
let count = 0;
// For single digit number
if (len == 1) {
let oneDigit = n[0] - '0';
if (oneDigit % 8 == 0)
return 1;
return 0;
}
// For two-digit numbers
// (considering all pairs)
if (len == 2) {
// first pair
let first = (n[0] - '0') * 10 +
(n[1] - '0');
// second pair
let second = (n[1] - '0') * 10 +
(n[0] - '0');
if (first % 8 == 0)
count++;
if (second % 8 == 0)
count++;
return count;
}
// Considering all
// three-digit sequences
let threeDigit;
for (let i = 0; i < (len - 2); i++) {
threeDigit = (n[i] - '0') * 100 +
(n[i + 1] - '0') * 10 +
(n[i + 2] - '0');
if (threeDigit % 8 == 0)
count++;
}
// Considering the number
// formed by the last digit
// and the first two digits
threeDigit = (n[len - 1] - '0') * 100 +
(n[0] - '0') * 10 +
(n[1] - '0');
if (threeDigit % 8 == 0)
count++;
// Considering the number
// formed by the last two
// digits and the first digit
threeDigit = (n[len - 2] - '0') * 100 +
(n[len - 1] - '0') * 10 +
(n[0] - '0');
if (threeDigit % 8 == 0)
count++;
// Required count
// of rotations
return count;
}
// Driver Code
let n = "43262488612";
console.log("Rotations: " + countRotationsDivBy8(n));
Complexity Analysis:
- Time Complexity : O(n), where n is the number of digits in input number.
- Auxiliary Space: O(1)
Please refer complete article on Count rotations divisible by 8 for more details!
Similar Reads
Javascript Program to Count rotations divisible by 4 Given a large positive number as string, count all rotations of the given number which are divisible by 4. Examples: Input: 8Output: 1Input: 20Output: 1Rotation: 20 is divisible by 4 02 is not divisible by 4Input : 13502Output : 0No rotation is divisible by 4Input : 43292816Output : 55 rotations are
2 min read
Javascript Program to Count rotations which are divisible by 10 Given a number N, the task is to count all the rotations of the given number which are divisible by 10.Examples: Input: N = 10203 Output: 2 Explanation: There are 5 rotations possible for the given number. They are: 02031, 20310, 03102, 31020, 10203 Out of these rotations, only 20310 and 31020 are d
2 min read
Count rotations divisible by 8 Given a large positive number as string, count all rotations of the given number which are divisible by 8. Examples: Input: 8 Output: 1 Input: 40 Output: 1 Rotation: 40 is divisible by 8 04 is not divisible by 8 Input : 13502 Output : 0 No rotation is divisible by 8 Input : 43262488612 Output : 4 Ap
10 min read
Count rotations divisible by 4 Given a large positive number as string, count all rotations of the given number which are divisible by 4. Examples: Input: 8 Output: 1 Input: 20 Output: 1 Rotation: 20 is divisible by 4 02 is not divisible by 4 Input : 13502 Output : 0 No rotation is divisible by 4 Input : 43292816 Output : 5 5 rot
6 min read
Javascript Program to Rotate digits of a given number by K Given two integers N and K, the task is to rotate the digits of N by K. If K is a positive integer, left rotate its digits. Otherwise, right rotate its digits. Examples: Input: N = 12345, K = 2Output: 34512 Explanation: Left rotating N(= 12345) by K(= 2) modifies N to 34512. Therefore, the required
2 min read
Javascript Program to Generate all rotations of a number Given an integer n, the task is to generate all the left shift numbers possible. A left shift number is a number that is generated when all the digits of the number are shifted one position to the left and the digit at the first position is shifted to the last.Examples: Input: n = 123 Output: 231 31
2 min read
Find the Rotation Count in Rotated Sorted array in JavaScript A Rotated Sorted Array is an array type in JavaScript that has been rotated to the left or right by some random number of positions. In this article, we will understand how to find the count of rotations performed on the original sorted array to obtain the given sorted array using JavaScript languag
5 min read
Javascript Program to Count of rotations required to generate a sorted array Given an array arr[], the task is to find the number of rotations required to convert the given array to sorted form.Examples: Input: arr[] = {4, 5, 1, 2, 3}Â Output: 2Â Explanation:Â Sorted array {1, 2, 3, 4, 5} after 2 anti-clockwise rotations. Input: arr[] = {2, 1, 2, 2, 2}Â Output: 1Â Explanation:Â So
4 min read
Count rotations which are divisible by 10 Given a number N, the task is to count all the rotations of the given number which are divisible by 10.Examples: Input: N = 10203 Output: 2 Explanation: There are 5 rotations possible for the given number. They are: 02031, 20310, 03102, 31020, 10203 Out of these rotations, only 20310 and 31020 are d
4 min read
Javascript Program to Find element at given index after a number of rotations An array consisting of N integers is given. There are several Right Circular Rotations of range[L..R] that we perform. After performing these rotations, we need to find element at a given index.Examples : Input : arr[] : {1, 2, 3, 4, 5} ranges[] = { {0, 2}, {0, 3} } index : 1 Output : 3 Explanation
4 min read