×

# CONTEST PANEL

Author: Ildar Gainullin
Tester: Oleksandr Kulkov
Editorialist: Prateek Gupta

EASY

# PROBLEM

Given a binary string, you need to transform this into a string consisting of only zeros by applying a specific operation number of times. The operation allows you to choose a prefix of the string and flip all the bits i.e '0' to '1' and '1' to '0'.

# EXPLANATION

The key is to observe that we need to reverse iterate the string and maintain the state as to how many times we have applied the given operation. When you reverse iterate the string and apply the operation on some index, it will affect the whole prefix $S[0..\ index\ -\ 1]$. Having said that, when we arrive at a particular index in the string, we already know the number of operations that have been applied till now. Based on the digit at this index and number of operations applied, we decide what is the actual digit at this position. If it is '0', we move forward, else we again flip the bits for a prefix ending at this position. Below is the simple pseudo code which will help you to understand things much better.  operations = 0 for ( i = s.length() - 1 to i = 0 ) { if ( digit(i) ^ operations ) { operations ^= 1; } } 

It must be clear from the above snippet, that in case the number of operations are even, the state of the current bit will remain same, otherwise (bit ^ 1). Since, we are traversing a string once, the overall complexity will be $O(N)$ where $N$ is the length of the given string. For details on the implementation, have a look at the author or tester's solution.

# SOLUTIONS

Author solution can be found here.
Tester solution can be found here.

This question is marked "community wiki".

20421223
accept rate: 0%

19.8k350498541

 1 nice solution @anurag_6767 and @osama_binladen editorials could have been more easy answered 03 Jan '18, 23:31 129●7 accept rate: 0%
 0 I am not able to understand it!! Can anyone describe it?? P.S: I passed all test cases of task #1 and got TLE in task #2! answered 31 May '17, 13:53 614●1●9 accept rate: 12%
 0 @dishant_18 check out my solution very easy approach solution link answered 31 May '17, 15:36 533●1●12 accept rate: 3%
 0 see my solution in c++ https://www.codechef.com/viewsolution/13967949 answered 01 Jun '17, 19:14 3●4 accept rate: 0%
 0 Check this solution... easily understandable... https://www.codechef.com/viewsolution/14225387 answered 12 Jun '17, 00:03 1 accept rate: 0%
 toggle preview community wiki:
Preview

By Email:

Markdown Basics

• *italic* or _italic_
• **bold** or __bold__
• image?![alt text](/path/img.jpg "title")
• numbered list: 1. Foo 2. Bar
• to add a line break simply add two spaces to where you would like the new line to be.
• basic HTML tags are also supported
• mathemetical formulas in Latex between \$ symbol

Question tags:

×3,770
×834
×349
×43
×6

question asked: 28 May '17, 11:34

question was seen: 1,508 times

last updated: 03 Jan '18, 23:31