Logic needed to solve this problem

Could you tell me the logic 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:

  1. 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.
    \
  2. 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.