
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
Count of n-Length Binary Strings from Substring Concatenation
The aim of this article is to implement a program to count of N-length binary strings that are repeated concatenation of a substring.
The goal is to determine how many binary strings of the length N can be created by repeatedly concatenating a single substring of a given text, provided a positive integer called N.
Problem Statement
Implement a program to count of N-length binary strings that are repeated concatenation of a substring.
Sample Example 1
Let us take the Input, N = 3
Output: 2
Explanation
Listed below are the feasible binary string of length N=3 with repeated concatenation of a substring.
"000":The substring "0" is repeatedly concatenated to form this string. "111":The substring "1" is repeatedly concatenated to form this string.
Therefore, when we take the total count of all these strings, we obtain the sum as 2. Hence, the output is 2.
Sample Example 2
Let us take the Input, N = 8
Output: 16
Explanation
Listed below are the feasible binary string of length N=8 with repeated concatenation of a substring.
"00000000": The substring "0" is repeatedly concatenated to form this string. "11111111": The substring "1" is repeatedly concatenated to form this string. "01010101": The substring "01" is repeatedly concatenated to form this string. "10101010": The substring "10" is repeatedly concatenated to form this string. "00110011": The substring "0011" is repeatedly concatenated to form this string. "11001100": The substring "1100" is repeatedly concatenated to form this string. "11011101": The substring "1101" is repeatedly concatenated to form this string. "00100010": The substring "0010" is repeatedly concatenated to form this string. "10111011": The substring "1011" is repeatedly concatenated to form this string. "01000100": The substring "0100" is repeatedly concatenated to form this string. "10001000": The substring "1000" is repeatedly concatenated to form this string. "00010001": The substring "0001" is repeatedly concatenated to form this string. "11101110": The substring "1110" is repeatedly concatenated to form this string. "01110111": The substring "0111" is repeatedly concatenated to form this string. "01100110": The substring "0110" is repeatedly concatenated to form this string. "10011001": The substring "1001" is repeatedly concatenated to form this string.
Therefore, when we take the total count of all these strings, we obtain the sum as 16. Hence, the output is 16.
Approach
In Order to count of N-length binary strings that are repeated concatenation of a substring, we take the following methodology.
The approach to solve this problem and count of N-length binary strings that are repeated concatenation of a substring.
The above problem can be addressed based on the fact that every feasible string includes a repeated substring that is concatenated, say, C times. The supplied length of string N therefore needs to be divisible by C to produce all the consequent strings.
Thereby, discover every one of the divisors of N, then for each possible divisor, say C, discover the total number of all potential strings that may be created by concatenating them; this number can be determined using 2C. To determine the overall count of every recursive call, apply the same technique across the divisor C then deduct it from 2C. This will also take into account the number of repeated strings that exist among them.
Algorithm
The algorithm to count of N-length binary strings that are repeated concatenation of a substring given below.
Step 1 ? Start
Step 2 ? Define function to count the number of strings of length N such that it is a concatenation of its substrings.
Step 3 ? Check whether the state is already calculated or not
Step 4 ? Stores the value of the result or the count for the current recursive calls
Step 5 ? Iterate over all the divisors
Step 6 ? Return the obtained result
Step 7 ? Stop
Example: C++ Program
Here is the C program implementation of the above written algorithm to count of N-length binary strings that are repeated concatenation of a substring.
// C++ program for the above approach #include<bits/stdc++.h> using namespace std; // Storing all the states of recurring recursive map<int, int> dp; // Function for counting the number of strings of length n wherein thatstring is a concatenation of its substrings int countTheStrings(int n){ //the single character cannot be repeated if (n == 1) return 0; // Checking whether the state is calculated already or not if (dp.find(n) != dp.end()) return dp[n]; // Storing those value of the result or the count for the present recursive call int res = 0; // Iterate through all of the divisors for(int d= 1; d <= sqrt(n); d++){ if (n % d== 0){ res += (1 << d) - countTheStrings(d); int div1 = n/d; if (div1 != d and d!= 1) // Non-Rep = Total - Rep res += (1 << div1) - countTheStrings(div1); } } // Storing the result of the above calculations dp[n] = res; // Returning the obtained result return res; } int main(){ int n = 8; cout<< "Count of 8-length binary strings that are repeated concatenation of a substring: "<< endl; cout << countTheStrings(n) << endl; }
Output
Count of 8-length binary strings that are repeated concatenation of a substring ? 16
Conclusion
Likewise, we can count of N-length binary strings that are repeated concatenation of a substring.
The challenge of obtaining the count of N-length binary strings that are repeated concatenation of a substring is resolved in this article.
Here C++ programming code as well as the algorithm to count of N-length binary strings that are repeated concatenation of a substring are provided.