Description

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.

Sample Input

Input

5 2 3Hello

Output

2Hello

Input

10 9 5Codeforces

Output

2Codeforces

Input

6 4 5Privet

Output

-1

Input

8 1 1abacabac

Output

8abacabac
 1 #include<cstdio>
 2 char s[1000000];
 3 int main()
 4 {
 5     int n,p,q,k,l1,l2,l,g;
 6     while(scanf("%d %d %d",&n,&p,&q)!=EOF)
 7     {
 8         scanf("%s",&s);
 9         g=1;
10         for(int i = 0; i <= n ; i++)
11             {
12                  for( int j = 0; j <= n ; j++)
13                 {
14                     if(i*p+j*q == n)
15                     {
16                         printf("%d\n",i+j);
17                         k=-1;
18                         while(i--)
19                         {
20                             l=p;
21                             while(l--)
22                             {
23                                 printf("%c",s[++k]);
24                             }
25                             printf("\n");
26                         }
27                         while(j--)
28                         {
29                             l=q;
30                             while(l--)
31                             {
32                                 printf("%c",s[++k]);
33                             }
34                             printf("\n");
35                         }
36                         g=0;
37                         break;
38                     }
39                 }
40                 if(g == 0) break;
41             }
42             if(g != 0) printf("-1\n");
43
44     }
45
46 }

转载于:https://www.cnblogs.com/yexiaozi/p/5692699.html

The Text Splitting (将字符串分成若干份,每份长度为p或q)相关推荐

  1. 小明有N(4≤N≤60)个玻璃球,他想将N个玻璃球拆分成若干份(份数≥2,且每份中的数量互不相等),从而使拆分后的每份玻璃球数量的乘积最大。请你编写程序帮助小明计算出最大乘积是多少...

    小明想要将N个玻璃球拆分成若干份,使得每份的玻璃球数量的乘积最大.为了计算出最大的乘积,你可以使用贪心算法. 首先,将N个玻璃球拆分成若干份,使得每份的玻璃球数量的乘积最大,意味着每份的玻璃球数量应尽 ...

  2. Python把列表中的数字尽量等分成n份

    问题描述:假设一个列表中含有若干整数,现在要求将其分成n个子列表,并使得各个子列表中的整数之和尽可能接近. 下面的代码并没有使用算法,而是直接将原始列表分成n个子列表,然后再不断地调整各个子列表中的数 ...

  3. 把一个数随机分成n份,随机数字和等于总数 PHP代码

    把一个数随机分成n份,随机数字和等于总数 PHP代码 例如:100随机分成5份,5个数字的和等于100: 一.100个数随机分成10份: 说明: 1.此算法money_total值可大于 person ...

  4. 把一个数随机分成n份,随机数字和等于这个数字

    一.100个数随机分成10份: 说明: 1.此算法$money_total值可大于 $personal_num 也可以小于$personal_num: 2.得出来的结果是保留两位小数点: 3.相加和等 ...

  5. 正方形分成16份,将1到16填入其中。让行和列都是从大到小。问一共有多少种方法?...

    看了到面试题: 将正方形分成16份,将1到16填入其中.让行和列都是从大到小.问一共有多少种方法? 此题 解法有: 1. 穷举,基本不用考虑 复杂度O(16!). 2. 枚举+剪枝 .代码如下:得到答 ...

  6. 将一个大文件分成若干个小文件方法

    2019独角兽企业重金招聘Python工程师标准>>> 将一个大文件分成若干个小文件方法 例如将一个BLM.txt文件分成前缀为 BLM_ 的1000个小文件,后缀为系数形式,且后缀 ...

  7. 在一台超级计算机上,编号为1,2,…,n的n个作业等待批处理。批处理的任务就是将这n个作业分成若干批,每批包含相邻的若干作业。从时刻0开始,分批加工这些作业。在每批作业开始前,机器需要启动时间S,而完

    问题描述: 在一台超级计算机上,编号为1,2,-,n的n个作业等待批处理.批处理的任务就是将这n个作业分成若干批,每批包含相邻的若干作业.从时刻0开始,分批加工这些作业.在每批作业开始前,机器需要启动 ...

  8. java 平均分割list_Java 实现将List平均分成若干个集合

    1.初衷是由于调用银行接口的批量处理接口时,每次最多只能处理500条数据,但是当数据总数为510条时.我又不想第一次调用处理500条,第二次调用处理10条数据,我想要的是每次处理255条数据. 下面展 ...

  9. html圆形分成六份,在ai里怎么把一个圆平均分成几份

    1.AI 里圆圈怎么平均分成5份 AI里将圆圈平均分成5份的办法: 第一步:打开AI新建画布,画布的基本设置按照实际需求进行设置即可. 第二步:在工具栏中选择"极坐标网格工具",鼠 ...

最新文章

  1. QTP的那些事---页面弹出框的处理,页面等待加载的处理
  2. r语言 编辑 d3.js_d3.js的语言介绍
  3. 机器学习领域最新十篇论文,来自谷歌、Facebook、普林斯顿大学、斯坦福大学等团队的最新研究成果...
  4. mysql数据库表的连接查询_mysql数据库多表连接查询问题
  5. 基于小波shint/DCT编码压缩解压缩的FPGA实现
  6. FFT快速傅式变换算法halcon算子,持续更新
  7. IDEA MySql之增删改查
  8. redis配置文件的介绍
  9. iOS 滑块拼图游戏(Puzzle8)
  10. JavaScript实现继承的方式
  11. java注解(Annotation)-小羊的记录本(转)
  12. TcaplusDB君 · 行业新闻汇编(五)
  13. 移动端隐藏手机虚拟键盘
  14. 林轩田《机器学习基石》作业一-Python实现
  15. 从零开始制作STM32F103RCT6小车(一)
  16. GPS中的空间坐标系
  17. CNN结构演变总结(二)轻量化模型
  18. 动画交互应用——星球引力
  19. 如何在阿里云(centos7)上面搭建fastdfs服务器(搭建篇)--保姆级超级详细
  20. 2022/9/5 嵌套路由(靠路由在vue里渲染套渲染),动态路由匹配以及开启propos配置动态路由

热门文章

  1. html 表格过滤功能,简单的带排序和过滤功能的jQuery表格插件
  2. java寄存器_汇编学习 1 寄存器的作用 寻址方式 - DraculaW - JavaEye技术网站
  3. 我在学习springboot和vue前后台连接时碰到的问题记录!(跨域问题)
  4. 2021年全国大学生智能汽车竞赛山东赛区比赛顺利进行
  5. 低价电阻箱-阻值测试
  6. 如何合并多个Django项目?
  7. drools规则中调用其它规则_简化机器学习中的关联规则
  8. 检查集群状态命令_巨杉数据库SequoiaDB巨杉Tech | 四步走,快速诊断数据库集群状态...
  9. 兄弟9020cdn废粉仓位置_硒鼓的无废粉仓设计是否真的有效?
  10. cat卡特鞋有实体店吗_保养课堂 | 小小密封件,竟然是CAT油缸和连杆耐用的秘密...