首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【CodeForces】612A - The Text Splitting(枚举)

【CodeForces】612A - The Text Splitting(枚举)

作者头像
FishWang
发布2025-08-26 20:30:53
发布2025-08-26 20:30:53
14000
代码可运行
举报
运行总次数:0
代码可运行

点击打开题目

A. The Text Splitting

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given the string s of length n and the numbers p, q. Split the string s to pieces of length p and q.

For example, the string "Hello" for p = 2, q = 3 can be split to the two strings "Hel" and "lo" or to the two strings "He" and "llo".

Note it is allowed to split the string s to the strings only of length p or to the strings only of length q (see the second sample test).

Input

The first line contains three positive integers n, p, q (1 ≤ p, q ≤ n ≤ 100).

The second line contains the string s consists of lowercase and uppercase latin letters and digits.

Output

If it's impossible to split the string s to the strings of length p and q print the only number "-1".

Otherwise in the first line print integer k — the number of strings in partition of s.

Each of the next k lines should contain the strings in partition. Each string should be of the length p or q. The string should be in order of their appearing in string s — from left to right.

If there are several solutions print any of them.

Examples

input

代码语言:javascript
代码运行次数:0
运行
复制
5 2 3
Hello

output

代码语言:javascript
代码运行次数:0
运行
复制
2
He
llo

input

代码语言:javascript
代码运行次数:0
运行
复制
10 9 5
Codeforces

output

代码语言:javascript
代码运行次数:0
运行
复制
2
Codef
orces

input

代码语言:javascript
代码运行次数:0
运行
复制
6 4 5
Privet

output

代码语言:javascript
代码运行次数:0
运行
复制
-1

input

代码语言:javascript
代码运行次数:0
运行
复制
8 1 1
abacabac

output

代码语言:javascript
代码运行次数:0
运行
复制
8
a
b
a
c
a
b
a
c

p * x + q * y = n 枚举解 x,y 就行了。

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
#include <cstdio>
int main()
{
	int l,p,q;
	char s[111];
	int ant1,ant2;		//两个循环次数 
	while (~scanf ("%d %d %d",&l,&p,&q))
	{
		scanf ("%s",s+1);
		if (l % p == 0)
		{
			printf ("%d\n",l / p);
			for (int i = 1 ; i <= l ; i++)
			{
				printf ("%c",s[i]);
				if (i % p == 0)
					printf ("\n");
			}
		}
		else if (l % q == 0)
		{
			printf ("%d\n",l / q);
			for (int i = 1 ; i <= l ; i++)
			{
				printf ("%c",s[i]);
				if (i % q == 0)
					printf ("\n");
			}
		}
		else
		{
			bool ans = false;
			for (int i = 1 ; i <= 100 ; i++)
			{
				if (i * p > l)
				{
					ans = false;
					break;
				}
				for (int j = 1 ; j <= 100 ; j++)
				{
					if (j * q > l)
						break;
					if (i * p + j * q == l)
					{
						ant1 = i;
						ant2 = j;
						ans = true;
					}
				}
				if (ans)
					break;
			}
			if (ans)
			{
				printf ("%d\n",ant1+ant2);
				int pos = 1;
				for (int i = 1 ; i <= ant1 ; i++)
				{
					for (int j = 1 ; j <= p ; j++)
						printf ("%c",s[pos++]);
					printf ("\n");
				}
				for (int i = 1 ; i <= ant2 ; i++)
				{
					for (int j = 1 ; j <= q ; j++)
						printf ("%c",s[pos++]);
					printf ("\n");
				}
			}
			else
				printf ("-1\n");
		}
	}
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档