Could you tell me the logic to solve this problem?
Logic needed to solve this problem
Hello @pragyachoudhary1111,
In the question you have to find the maximum number of CB numbers that you can form from the input:
In the Sample Testcases:
Example 1:
5
81615
There are at max two CB numbers that we can form:
61
5
Thus, the output is 2.
Approach:
- check for all sub-strings of the given string of digits, starting from the all strings of length 1 and then gradually checking for the strings of increasing size:
1.1. check if the sub-string is CB number: for this, create a function
1.1.1. if sub-string is 1 or 0 return false.
1.1.2. if sub-string is any of the {2,3,5,7,11,13,17,19,23,29}, then return true.
1.1.3. if sub-string is divisible by any of the {2,3,5,7,11,13,17,19,23,29}, then return false.
1.1.4. return false
1.2. now if it is a substring:
1.2.1. call a function that marks the index as visited for indexes which are part of that CB number.
1.3. increment the count for CB number.
\ - Print the count
Hope, this would help.
If you still have any issue, feel free to ask.
Give a like if you are satisfied.
how to do- call a function that marks the index as visited for indexes which are part of that CB number.
Sure @pragyachoudhary1111,
make an bool array visiited[n] and all the values initialized to false:
if the selected CB number is from index i to j.
Then just make the values at indexes i to j as true.
Hope, this would help.