0
点赞
收藏
分享

微信扫一扫

Codeforces Round #177 (Div. 1) / 288A Polo the Penguin and Strings(贪心)



A. Polo the Penguin and Strings



http://codeforces.com/problemset/problem/288/A



time limit per test



memory limit per test



input



output


n.

One day he wanted to find a string that meets the following conditions:

  1. n lowercase English letters (that is, the string's length equals n), exactly k
  2. s = s1s2... sn, then the following inequality holds,si ≠ si + 1(1 ≤ i < n).
  3. Among all strings that meet points 1 and 2, the required string is lexicographically smallest.

Help him find such string or state that such string doesn't exist.

x = x1x2... xp is lexicographically less than string y = y1y2... yq, if either p < q and x1 = y1, x2 = y2, ... , xp = yp, or there is such number r (r < p, r < q), that x1 = y1, x2 = y2, ... , xr = yr and xr + 1 < yr + 1. The characters of the strings are compared by their ASCII codes.


Input



n and k (1 ≤ n ≤ 106, 1 ≤ k ≤ 26)


Output



-1" (without the quotes).


Sample test(s)



input



7 4



output



ababacd



input



4 7



output



-1



大水题。


完整代码:

/*30ms,0KB*/

#include<cstdio>

int main()
{
	int n, k;
	scanf("%d%d", &n, &k);
	if (n < k)
		printf("-1");
	else if (n == k)
		for (int i = 97; i < 97 + k; ++i)
			putchar(i);
	else if (k == 1)
		printf("-1");
	else
	{
		n -= k - 2;
		if (n & 1)
		{
			n = (n - 1) >> 1;
			for (int i = 0; i < n; ++i)
			{
				putchar('a');
				putchar('b');
			}
			putchar('a');
		}
		else
		{
			n >>= 1;
			for (int i = 0; i < n; ++i)
			{
				putchar('a');
				putchar('b');
			}
		}
		for (int i = 99; i < 97 + k; ++i)
			putchar(i);
	}
	return 0;
}




举报

相关推荐

0 条评论