[codeforces1158B]The minimal unique substring

Copyright: hard code word, when you reprint remember to tell me https://blog.csdn.net/dxyinme/article/details/90489958

time limit per test : 1 second
memory limit per test : 256 megabytes

Let s be some string consisting of symbols “0” or “1”. Let’s call a string t a substring of string s, if there exists such number 1 l s t + 1 1≤l≤|s|−|t|+1 that t = s l s l + 1 s l + t 1 t=s_ls_{l+1}…s_{l+|t|−1} . Let’s call a substring t t of string s s unique, if there exist only one such l l .

For example, let s s =“1010111”. A string t t =“010” is an unique substring of s s , because l l =2 is the only one suitable number. But, for example t=“10” isn’t a unique substring of s s , because l l =1 and l l =3 are suitable. And for example t t =“00” at all isn’t a substring of s s , because there is no suitable l l .

Today Vasya solved the following problem at the informatics lesson: given a string consisting of symbols “0” and “1”, the task is to find the length of its minimal unique substring. He has written a solution to this problem and wants to test it. He is asking you to help him.

You are given 2 positive integers n n and k k , such that ( n (n m o d mod 2 ) = ( k 2)=(k m o d mod 2 ) 2) , where ( x (x m o d mod 2 ) 2) is operation of taking remainder of x by dividing on 2. Find any string s consisting of n symbols “0” or “1”, such that the length of its minimal unique substring is equal to k k .

Input

The first line contains two integers n n and k k , separated by spaces ( 1 k n 100000 , ( k (1≤k≤n≤100000, (k m o d mod 2 ) = ( n 2)=(n m o d mod 2 ) ) 2)) .

Output

Print a string s s of length n n , consisting of symbols “0” and “1”. Minimal length of the unique substring of s s should be equal to k k . You can find any suitable string. It is guaranteed, that there exists at least one such string.

Examples
Input

4 4

Output

1111

Input

5 3

Output

01010

Input

7 3

Output

1011011

Note

In the first test, it’s easy to see, that the only unique substring of string s=“1111” is all string s, which has length 4.

In the second test a string s=“01010” has minimal unique substring t=“101”, which has length 3.

In the third test a string s=“1011011” has minimal unique substring t=“110”, which has length 3.

Meaning of the questions:
given two numbers n , k n,k , they are the same parity, a configuration required length n n of the string 01 s s , such that s s all length of less than k k of the substring s s are more than once. Ensure solvable.

Solution:
First we set l = ( n k ) / 2 l=(n-k)/2
because the solution must exist, and is necessarily s l + 1 . . . s n l s_{l+1}...s_{n-l}
Then the rest is well understood, so lets divided as follows 1 1 to k 1 k-1 length of the string are duplicated.
As long as each of us ( ( n k ) / 2 + 1 ) q ( q > = n ) ((n-k)/2+1)*q (q>=n) at the other locations are placed in a 0 to 1.

#include<bits/stdc++.h>
#define LiangJiaJun main
using namespace std;
int n,k;
int LiangJiaJun(){
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++){
		printf("%d",(i%((n-k)/2+1)>0));
	}
	puts("");
	return 0;
}

Guess you like

Origin blog.csdn.net/dxyinme/article/details/90489958