Given a binary string **S**, the task is to find the number of ways to split it into parts such that every part is divisible by **2**.

**Examples:**

Input:S = “100”

Output:2

There are two ways to split the string:

{“10”, “0”} and {“100”}

Input:S = “110”

Output:1

**Approach:** One observation is that the string can only be split after a **0**. Thus, count the number of zeros in the string. Let’s call this count as **c_zero**. Assuming the case when the string is even, for every **0** except for the rightmost one, there are two choices i.e. either cut the string after that zero or don’t. Thus, the final answer becomes **2 ^{(c_zero – 1)}** for even strings.

The case, where the string can’t be split is the case when it ends at a

**1**. Thus, for odd strings answer will always be zero as the last split part will always be odd.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `#define maxN 20 ` `#define maxM 64 ` ` ` `// Function to return the required count ` `int` `cntSplits(string s) ` `{ ` ` ` `// If the splitting is not possible ` ` ` `if` `(s[s.size() - 1] == ` `'1'` `) ` ` ` `return` `0; ` ` ` ` ` `// To store the count of zeroes ` ` ` `int` `c_zero = 0; ` ` ` ` ` `// Counting the number of zeroes ` ` ` `for` `(` `int` `i = 0; i < s.size(); i++) ` ` ` `c_zero += (s[i] == ` `'0'` `); ` ` ` ` ` `// Return the final answer ` ` ` `return` `(` `int` `)` `pow` `(2, c_zero - 1); ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `string s = ` `"10010"` `; ` ` ` ` ` `cout << cntSplits(s); ` ` ` ` ` `return` `0; ` `} ` |

## Java

`// Java implementation of the approach ` `class` `GFG ` `{ ` ` ` `static` `int` `maxN = ` `20` `; ` `static` `int` `maxM = ` `64` `; ` ` ` `// Function to return the required count ` `static` `int` `cntSplits(String s) ` `{ ` ` ` `// If the splitting is not possible ` ` ` `if` `(s.charAt(s.length() - ` `1` `) == ` `'1'` `) ` ` ` `return` `0` `; ` ` ` ` ` `// To store the count of zeroes ` ` ` `int` `c_zero = ` `0` `; ` ` ` ` ` `// Counting the number of zeroes ` ` ` `for` `(` `int` `i = ` `0` `; i < s.length(); i++) ` ` ` `c_zero += (s.charAt(i) == ` `'0'` `) ? ` `1` `: ` `0` `; ` ` ` ` ` `// Return the final answer ` ` ` `return` `(` `int` `)Math.pow(` `2` `, c_zero - ` `1` `); ` `} ` ` ` `// Driver code ` `public` `static` `void` `main(String []args) ` `{ ` ` ` `String s = ` `"10010"` `; ` ` ` ` ` `System.out.println(cntSplits(s)); ` `} ` `} ` ` ` `// This code is contributed by PrinciRaj1992 ` |

## Python3

`# Python3 implementation of the approach ` ` ` `# Function to return the required count ` `def` `cntSplits(s) : ` ` ` ` ` `# If the splitting is not possible ` ` ` `if` `(s[` `len` `(s) ` `-` `1` `] ` `=` `=` `'1'` `) : ` ` ` `return` `0` `; ` ` ` ` ` `# To store the count of zeroes ` ` ` `c_zero ` `=` `0` `; ` ` ` ` ` `# Counting the number of zeroes ` ` ` `for` `i ` `in` `range` `(` `len` `(s)) : ` ` ` `c_zero ` `+` `=` `(s[i] ` `=` `=` `'0'` `); ` ` ` ` ` `# Return the final answer ` ` ` `return` `int` `(` `pow` `(` `2` `, c_zero ` `-` `1` `)); ` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` ` ` `s ` `=` `"10010"` `; ` ` ` ` ` `print` `(cntSplits(s)); ` ` ` `# This code is contributed by AnkitRai01 ` |

## C#

`// C# implementation of the approach ` `using` `System; ` ` ` `class` `GFG ` `{ ` ` ` `static` `int` `maxN = 20; ` `static` `int` `maxM = 64; ` ` ` `// Function to return the required count ` `static` `int` `cntSplits(String s) ` `{ ` ` ` `// If the splitting is not possible ` ` ` `if` `(s[s.Length - 1] == ` `'1'` `) ` ` ` `return` `0; ` ` ` ` ` `// To store the count of zeroes ` ` ` `int` `c_zero = 0; ` ` ` ` ` `// Counting the number of zeroes ` ` ` `for` `(` `int` `i = 0; i < s.Length; i++) ` ` ` `c_zero += (s[i] == ` `'0'` `) ? 1 : 0; ` ` ` ` ` `// Return the final answer ` ` ` `return` `(` `int` `)Math.Pow(2, c_zero - 1); ` `} ` ` ` `// Driver code ` `public` `static` `void` `Main(String []args) ` `{ ` ` ` `String s = ` `"10010"` `; ` ` ` ` ` `Console.WriteLine(cntSplits(s)); ` `} ` `} ` ` ` `// This code is contributed by 29AjayKumar ` |

**Output:**

4

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.