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 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} t=slsl+1…sl+∣t∣−1. Let’s call a substring t t t of string s s s unique, if there exist only one such l l l.
For example, let s s s=“1010111”. A string t t t=“010” is an unique substring of s s s, because l l l=2 is the only one suitable number. But, for example t=“10” isn’t a unique substring of s s s, because l l l=1 and l l l=3 are suitable. And for example t t t=“00” at all isn’t a substring of s s s, because there is no suitable l 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 n and k k k, such that ( n (n (n m o d mod mod 2 ) = ( k 2)=(k 2)=(k m o d mod mod 2 ) 2) 2), where ( x (x (x m o d mod mod 2 ) 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 k.
Input
The first line contains two integers n n n and k k k, separated by spaces ( 1 ≤ k ≤ n ≤ 100000 , ( k (1≤k≤n≤100000, (k (1≤k≤n≤100000,(k m o d mod mod 2 ) = ( n 2)=(n 2)=(n m o d mod mod 2 ) ) 2)) 2)).
Output
Print a string s s s of length n n n, consisting of symbols “0” and “1”. Minimal length of the unique substring of s s s should be equal to k k k. You can find any suitable string. It is guaranteed, that there exists at least one such string.
Examples Input
4 4Output
1111Input
5 3Output
01010Input
7 3Output
1011011Note
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,k,他们奇偶性相同,要求构造一个长度为 n n n的01串 s s s,使得 s s s所有长度小于 k k k的子串在 s s s中都不止出现一次。保证有解。
题解: 首先我们设 l = ( n − k ) / 2 l=(n-k)/2 l=(n−k)/2 因为解一定存在,而且必定为 s l + 1 . . . s n − l s_{l+1}...s_{n-l} sl+1...sn−l 那么接下来就很好理解了,这样如下划分可以让 1 1 1到 k − 1 k-1 k−1长度的字符串都出现重复。 我们只要在每个 ( ( n − k ) / 2 + 1 ) ∗ q ( q > = n ) ((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; }