[codeforces1158B]The minimal unique substring

版权声明:辛辛苦苦码字,你们转载的时候记得告诉我 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.

题意:
给定两个数字 n , k n,k ,他们奇偶性相同,要求构造一个长度为 n n 的01串 s s ,使得 s s 所有长度小于 k k 的子串在 s s 中都不止出现一次。保证有解。

题解:
首先我们设 l = ( n k ) / 2 l=(n-k)/2
因为解一定存在,而且必定为 s l + 1 . . . s n l s_{l+1}...s_{n-l}
那么接下来就很好理解了,这样如下划分可以让 1 1 k 1 k-1 长度的字符串都出现重复。
我们只要在每个 ( ( n k ) / 2 + 1 ) q ( q > = n ) ((n-k)/2+1)*q (q>=n) 处放置一个0其他位置都是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;
}

猜你喜欢

转载自blog.csdn.net/dxyinme/article/details/90489958
今日推荐