比特反转
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

愚人节这天,小夕有一个长度为n的二进制串 s小琳有一个整数 p , p 从0开始每次加1,直到 p 的二进制形式与s相同 ,想知道该过程中 p 的二进制下0或1反转次数 m
因为很喜欢二进制串s中的数字1的个数 num ,所以想知道 mnum 在二进制下的形式
例如:
 p = 2变成 p = 3,二进制下 010 变成 011,比特位改变 1 次
 p = 3变成 p = 4,二进制下 011 变成 100,比特位改变 3 次

输入描述:

第一行一个数字 n (1 \leq n \leq 10^5)
一个长度为 n 的二进制串 s (不含前导0)

输出描述:

输出一个字符串,表示 m + num 的二进制形式 (不含前导0)
示例1

输入

复制
2
11

输出

复制
110

说明

第二个样例:
0->1 对应二进制 000 -> 001 比特反转1次
1->2 对应二进制 001 -> 010 比特反转2次
2->3 对应二进制 010 -> 011 比特反转1次
即总共反转1+2+1=4次 
二进制串s中1的个数为2
所以m+num=6,6的二进制形式为110