Given a binary string **str** of length **N** and two integers **A** and **B** such that **0 ≤ A < B < n**. The task is to count the minimum number of operations on the string such that it gives 10^{A} as remainder when divided by 10^{B}. An operation means changing **1** to **0** or **0** to **1**.**Examples:**

Input:str = “1001011001”, A = 3, B = 6Output:2

The string after 2 operations is 1001001000.

1001001000 % 10^{6}= 10^{3}Input:str = “11010100101”, A = 1, B = 5Output:3

**Approach:** In order for the number to give **10 ^{A}** as remainder when divided by

**10**, the last

^{B}**B**digits of the string has to be

**0**except the digit at

**(A + 1)**position from the last which should be

^{th}**1**. Therefore, check the last

**B**digits of the string for the above condition and increase the count by 1 for each mismatch of digit.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to return the minimum number` `// of operations on a binary string such that` `// it gives 10^A as remainder when divided by 10^B` `int` `findCount(string s, ` `int` `n, ` `int` `a, ` `int` `b)` `{` ` ` `// Initialize result` ` ` `int` `res = 0;` ` ` `// Loop through last b digits` ` ` `for` `(` `int` `i = 0; i < b; i++) {` ` ` `if` `(i == a)` ` ` `res += (s[n - i - 1] != ` `'1'` `);` ` ` `else` ` ` `res += (s[n - i - 1] != ` `'0'` `);` ` ` `}` ` ` `return` `res;` `}` `// Driver code` `int` `main()` `{` ` ` `string str = ` `"1001011001"` `;` ` ` `int` `N = str.size();` ` ` `int` `A = 3, B = 6;` ` ` `cout << findCount(str, N, A, B);` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the approach` `import` `java.util.*;` `class` `GFG` `{` ` ` ` ` `// Function to return the minimum number` ` ` `// of operations on a binary string such that` ` ` `// it gives 10^A as remainder when divided by 10^B` ` ` `static` `int` `findCount(String s, ` `int` `n, ` `int` `a, ` `int` `b)` ` ` `{` ` ` `// Initialize result` ` ` `int` `res = ` `0` `;` ` ` `char` `[]s1 = s.toCharArray();` ` ` ` ` `// Loop through last b digits` ` ` `for` `(` `int` `i = ` `0` `; i < b; i++)` ` ` `{` ` ` ` ` `if` `(i == a)` ` ` `{` ` ` `if` `(s1[n - i - ` `1` `] != ` `'1'` `)` ` ` `res += ` `1` `;` ` ` `}` ` ` `else` ` ` `{` ` ` `if` `(s1[n - i - ` `1` `] != ` `'0'` `)` ` ` `res += ` `1` `;` ` ` `}` ` ` ` ` `}` ` ` ` ` `return` `res;` ` ` `}` ` ` ` ` `// Driver code` ` ` `static` `public` `void` `main (String []args)` ` ` `{` ` ` ` ` `String str = ` `"1001011001"` `;` ` ` `int` `N = str.length() ;` ` ` `int` `A = ` `3` `, B = ` `6` `;` ` ` ` ` `System.out.println(findCount(str, N, A, B));` ` ` ` ` `}` `}` `// This code is contributed by ChitraNayal` |

## Python3

`# Python 3 implementation of the approach` `# Function to return the minimum number` `# of operations on a binary string such that` `# it gives 10^A as remainder when divided by 10^B` `def` `findCount(s, n, a, b):` ` ` `# Initialize result` ` ` `res ` `=` `0` ` ` `# Loop through last b digits` ` ` `for` `i ` `in` `range` `(b):` ` ` `if` `(i ` `=` `=` `a):` ` ` `res ` `+` `=` `(s[n ` `-` `i ` `-` `1` `] !` `=` `'1'` `)` ` ` `else` `:` ` ` `res ` `+` `=` `(s[n ` `-` `i ` `-` `1` `] !` `=` `'0'` `)` ` ` `return` `res` `# Driver code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` `str` `=` `"1001011001"` ` ` `N ` `=` `len` `(` `str` `)` ` ` `A ` `=` `3` ` ` `B ` `=` `6` ` ` `print` `(findCount(` `str` `, N, A, B))` `# This code is contributed by` `# Surendra_Gangwar` |

## C#

`// C# implementation of the approach` `using` `System;` `class` `GFG` `{` ` ` ` ` `// Function to return the minimum number` ` ` `// of operations on a binary string such that` ` ` `// it gives 10^A as remainder when divided by 10^B` ` ` `static` `int` `findCount(` `string` `s, ` `int` `n, ` `int` `a, ` `int` `b)` ` ` `{` ` ` `// Initialize result` ` ` `int` `res = 0;` ` ` ` ` `// Loop through last b digits` ` ` `for` `(` `int` `i = 0; i < b; i++)` ` ` `{` ` ` ` ` `if` `(i == a)` ` ` `{` ` ` `if` `(s[n - i - 1] != ` `'1'` `)` ` ` `res += 1;` ` ` `}` ` ` `else` ` ` `{` ` ` `if` `(s[n - i - 1] != ` `'0'` `)` ` ` `res += 1 ;` ` ` `}` ` ` ` ` `}` ` ` ` ` `return` `res;` ` ` `}` ` ` ` ` `// Driver code` ` ` `static` `public` `void` `Main ()` ` ` `{` ` ` ` ` `string` `str = ` `"1001011001"` `;` ` ` `int` `N = str.Length ;` ` ` `int` `A = 3, B = 6;` ` ` ` ` `Console.WriteLine(findCount(str, N, A, B));` ` ` ` ` `}` `}` `// This code is contributed by AnkitRai01` |

**Output:**

2

**Time Complexity:** O(N )

**Auxiliary Space:** O(N)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**